diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 54c084c0f8..b6d5905f4a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1,2 @@ # This should match the owning team set up in https://github.com/orgs/opensearch-project/teams -* @chenqi0805 @engechas @graytaylor0 @dinujoh @kkondaka @KarstenSchnitter @dlvenable @oeyh \ No newline at end of file +* @sb2k16 @chenqi0805 @engechas @graytaylor0 @dinujoh @kkondaka @KarstenSchnitter @dlvenable @oeyh \ No newline at end of file diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 6b3cd83eb1..d52c15f225 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -6,6 +6,7 @@ This document contains a list of maintainers in this repo. See [opensearch-proje | Maintainer | GitHub ID | Affiliation | | -------------------- | --------------------------------------------------------- | ----------- | +| Souvik Bose | [sb2k16](https://github.com/sb2k16) | Amazon | | Qi Chen | [chenqi0805](https://github.com/chenqi0805) | Amazon | | Chase Engelbrecht | [engechas](https://github.com/engechas) | Amazon | | Taylor Gray | [graytaylor0](https://github.com/graytaylor0) | Amazon | diff --git a/THIRD-PARTY b/THIRD-PARTY index 101f5445cc..96cd07643f 100644 --- a/THIRD-PARTY +++ b/THIRD-PARTY @@ -1,5 +1,5 @@ -Dependency License Report for opensearch-data-prepper 2.6.0-SNAPSHOT +Dependency License Report for opensearch-data-prepper 2.11.0-SNAPSHOT 1. Group: aopalliance Name: aopalliance Version: 1.0 @@ -7,231 +7,7 @@ POM Project URL: http://aopalliance.sourceforge.net POM License: Public Domain-------------------------------------------------------------------------------- -2. Group: ch.qos.reload4j Name: reload4j Version: 1.2.19 - -Manifest Project URL: https://reload4j.qos.ch/ - -POM Project URL: https://reload4j.qos.ch - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 1999-2005 The Apache Software Foundation - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache log4j -Copyright 2007 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). --------------------------------------------------------------------------------- - -3. Group: ch.qos.reload4j Name: reload4j Version: 1.2.22 +2. Group: ch.qos.reload4j Name: reload4j Version: 1.2.22 Manifest Project URL: https://reload4j.qos.ch/ @@ -455,19 +231,16 @@ This product includes software developed at The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -4. Group: ch.qos.reload4j Name: reload4j Version: 1.2.25 +3. Group: co.elastic.clients Name: elasticsearch-java Version: 7.17.0 -Manifest Project URL: https://reload4j.qos.ch/ - -POM Project URL: https://reload4j.qos.ch +POM Project URL: https://github.com/elastic/elasticsearch-java/ -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -656,7 +429,7 @@ Embedded license: same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 1999-2005 The Apache Software Foundation + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -672,24 +445,145 @@ Embedded license: **************************************** -Apache log4j -Copyright 2007 The Apache Software Foundation +Elasticsearch Java Client +Copyright 2021 Elasticsearch B.V. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -5. Group: ch.randelshofer Name: fastdoubleparser Version: 0.8.0 +4. Group: com.aayushatharva.brotli4j Name: brotli4j Version: 1.16.0 -POM Project URL: https://github.com/wrandelshofer/FastDoubleParser +POM License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 -POM License: MIT License - http://www.opensource.org/licenses/mit-license.php +-------------------------------------------------------------------------------- + +5. Group: com.aayushatharva.brotli4j Name: service Version: 1.16.0 + +POM License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -6. Group: co.elastic.clients Name: elasticsearch-java Version: 7.17.0 +6. Group: com.amazon.ion Name: ion-java Version: 1.11.8 -POM Project URL: https://github.com/elastic/elasticsearch-java/ +POM Project URL: https://github.com/amazon-ion/ion-java/ + +POM License: The Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +7. Group: com.amazonaws Name: aws-java-sdk-core Version: 1.12.638 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +-------------------------------------------------------------------------------- + +8. Group: com.amazonaws Name: aws-java-sdk-core Version: 1.12.660 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +-------------------------------------------------------------------------------- + +9. Group: com.amazonaws Name: aws-java-sdk-sts Version: 1.12.638 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +-------------------------------------------------------------------------------- + +10. Group: com.amazonaws Name: aws-java-sdk-sts Version: 1.12.660 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +-------------------------------------------------------------------------------- + +11. Group: com.amazonaws Name: jmespath-java Version: 1.12.638 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +-------------------------------------------------------------------------------- + +12. Group: com.amazonaws Name: jmespath-java Version: 1.12.660 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +-------------------------------------------------------------------------------- + +13. Group: com.apptasticsoftware Name: rssreader Version: 3.7.0 + +POM Project URL: https://github.com/w3stling/rssreader + +POM License: MIT License - https://raw.githubusercontent.com/w3stling/rssreader/master/LICENSE + +-------------------------------------------------------------------------------- + +14. Group: com.carrotsearch Name: hppc Version: 0.8.1 + +Manifest Project URL: http://www.carrotsearch.com + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +15. Group: com.damnhandy Name: handy-uri-templates Version: 2.1.8 + +Project URL: https://github.com/damnhandy/Handy-URI-Templates + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +16. Group: com.eclipsesource.minimal-json Name: minimal-json Version: 0.9.5 + +POM Project URL: https://github.com/ralfstx/minimal-json + +POM License: MIT License - http://opensource.org/licenses/MIT + +-------------------------------------------------------------------------------- + +17. Group: com.fasterxml Name: classmate Version: 1.5.1 + +Project URL: https://github.com/FasterXML/java-classmate + +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** + +This copy of Java ClassMate library is licensed under Apache (Software) License, +version 2.0 ("the License"). +See the License for details about distribution rights, and the specific rights regarding derivate works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 + + **************************************** + +Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi) + +Other developers who have contributed code are: + +* Brian Langel + + +-------------------------------------------------------------------------------- + +18. Group: com.fasterxml.jackson.core Name: jackson-annotations Version: 2.17.2 + +Project URL: https://github.com/FasterXML/jackson POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -697,6 +591,7 @@ Embedded license: **************************************** + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -901,202 +796,35 @@ Embedded license: **************************************** -Elasticsearch Java Client -Copyright 2021 Elasticsearch B.V. - --------------------------------------------------------------------------------- - -7. Group: com.aayushatharva.brotli4j Name: brotli4j Version: 1.12.0 - -POM License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -8. Group: com.aayushatharva.brotli4j Name: service Version: 1.12.0 - -POM License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -9. Group: com.amazon.ion Name: ion-java Version: 1.9.5 - -POM Project URL: https://github.com/amzn/ion-java/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -10. Group: com.amazonaws Name: aws-java-sdk-core Version: 1.12.395 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -11. Group: com.amazonaws Name: aws-java-sdk-core Version: 1.12.506 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -12. Group: com.amazonaws Name: aws-java-sdk-glue Version: 1.12.506 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -13. Group: com.amazonaws Name: aws-java-sdk-kms Version: 1.12.395 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -14. Group: com.amazonaws Name: aws-java-sdk-s3 Version: 1.12.395 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -15. Group: com.amazonaws Name: aws-java-sdk-sts Version: 1.12.395 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -16. Group: com.amazonaws Name: jmespath-java Version: 1.12.395 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -17. Group: com.amazonaws Name: jmespath-java Version: 1.12.506 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - --------------------------------------------------------------------------------- - -18. Group: com.apptasticsoftware Name: rssreader Version: 3.2.5 - -POM Project URL: https://github.com/w3stling/rssreader - -POM License: MIT License - https://raw.githubusercontent.com/w3stling/rssreader/master/LICENSE - --------------------------------------------------------------------------------- - -19. Group: com.carrotsearch Name: hppc Version: 0.8.1 - -Manifest Project URL: http://www.carrotsearch.com - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -20. Group: com.charleskorn.kaml Name: kaml Version: 0.55.0 - -No license information found - -21. Group: com.charleskorn.kaml Name: kaml-jvm Version: 0.55.0 - -POM Project URL: https://github.com/charleskorn/kaml - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -22. Group: com.damnhandy Name: handy-uri-templates Version: 2.1.8 - -Project URL: https://github.com/damnhandy/Handy-URI-Templates - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -23. Group: com.eclipsesource.minimal-json Name: minimal-json Version: 0.9.5 - -POM Project URL: https://github.com/ralfstx/minimal-json - -POM License: MIT License - http://opensource.org/licenses/MIT - --------------------------------------------------------------------------------- - -24. Group: com.fasterxml Name: classmate Version: 1.3.4 - -Project URL: http://github.com/FasterXML/java-classmate - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - -This copy of Java ClassMate library is licensed under Apache (Software) License, -version 2.0 ("the License"). -See the License for details about distribution rights, and the specific rights regarding derivate works. +# Jackson JSON processor -You may obtain a copy of the License at: +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. -http://www.apache.org/licenses/LICENSE-2.0 +## Copyright - **************************************** +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) -Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi) +## Licensing -Other developers who have contributed code are: +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. -* Brian Langel +## Credits +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -25. Group: com.fasterxml Name: classmate Version: 1.5.1 - -Project URL: https://github.com/FasterXML/java-classmate - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - -This copy of Java ClassMate library is licensed under Apache (Software) License, -version 2.0 ("the License"). -See the License for details about distribution rights, and the specific rights regarding derivate works. - -You may obtain a copy of the License at: - -http://www.apache.org/licenses/LICENSE-2.0 - - **************************************** - -Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi) - -Other developers who have contributed code are: - -* Brian Langel - +19. Group: com.fasterxml.jackson.core Name: jackson-core Version: 2.17.2 --------------------------------------------------------------------------------- - -26. Group: com.fasterxml.jackson.core Name: jackson-annotations Version: 2.15.3 +Project URL: https://github.com/FasterXML/jackson-core -Project URL: https://github.com/FasterXML/jackson +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -1331,11 +1059,22 @@ A list of contributors may be found from CREDITS(-2.x) file, which is included in some artifacts (usually source distributions); but is always available from the source code management (SCM) system project uses. +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser . +That code is available under an MIT license +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. + -------------------------------------------------------------------------------- -27. Group: com.fasterxml.jackson.core Name: jackson-core Version: 2.15.0 +20. Group: com.fasterxml.jackson.core Name: jackson-databind Version: 2.17.2 -Project URL: https://github.com/FasterXML/jackson-core +Project URL: https://github.com/FasterXML/jackson POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -1574,9 +1313,9 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -28. Group: com.fasterxml.jackson.core Name: jackson-core Version: 2.15.3 +21. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-cbor Version: 2.17.2 -Project URL: https://github.com/FasterXML/jackson-core +Project URL: https://github.com/FasterXML/jackson-dataformats-binary POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -1586,208 +1325,108 @@ Embedded license: **************************************** +This copy of Jackson JSON processor CBOR module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +You may obtain a copy of the License at: - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +http://www.apache.org/licenses/LICENSE-2.0 - 1. Definitions. + **************************************** - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +# Jackson JSON processor - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +## Copyright - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +## Licensing - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +## Credits - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +-------------------------------------------------------------------------------- - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +22. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-csv Version: 2.17.2 - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +Project URL: https://github.com/FasterXML/jackson-dataformats-text - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +Embedded license: - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + **************************************** - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +This copy of Jackson JSON processor CSV module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +You may obtain a copy of the License at: - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +http://www.apache.org/licenses/LICENSE-2.0 - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + **************************************** - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +# Jackson JSON processor - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +## Copyright - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - END OF TERMS AND CONDITIONS +## Licensing - APPENDIX: How to apply the Apache License to your work. +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +## Credits - Copyright [yyyy] [name of copyright owner] +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +23. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-ion Version: 2.17.2 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Project URL: https://github.com/FasterXML/jackson-dataformat-ion + +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** + +This copy of Jackson JSON processor Ion module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 **************************************** @@ -1804,31 +1443,20 @@ Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) ## Licensing -Jackson 2.x core and extension components are licensed under Apache License 2.0 -To find the details that apply to this artifact see the accompanying LICENSE file. +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. ## Credits -A list of contributors may be found from CREDITS(-2.x) file, which is included +A list of contributors may be found from CREDITS file, which is included in some artifacts (usually source distributions); but is always available from the source code management (SCM) system project uses. -## FastDoubleParser - -jackson-core bundles a shaded copy of FastDoubleParser . -That code is available under an MIT license -under the following copyright. - -Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. - -See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser -and the licenses and copyrights that apply to that code. - -------------------------------------------------------------------------------- -29. Group: com.fasterxml.jackson.core Name: jackson-databind Version: 2.15.3 +24. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-smile Version: 2.17.2 -Project URL: https://github.com/FasterXML/jackson +Project URL: https://github.com/FasterXML/jackson-dataformats-binary POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -1838,389 +1466,54 @@ Embedded license: **************************************** +This copy of Jackson JSON processor Smile module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +You may obtain a copy of the License at: - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +http://www.apache.org/licenses/LICENSE-2.0 - 1. Definitions. + **************************************** - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +# Jackson JSON processor - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +## Copyright - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +## Licensing - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +## Credits - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers. - -## Copyright - -Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - -## Licensing - -Jackson 2.x core and extension components are licensed under Apache License 2.0 -To find the details that apply to this artifact see the accompanying LICENSE file. - -## Credits - -A list of contributors may be found from CREDITS(-2.x) file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. - --------------------------------------------------------------------------------- - -30. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-cbor Version: 2.15.3 - -Project URL: https://github.com/FasterXML/jackson-dataformats-binary - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - -This copy of Jackson JSON processor CBOR module is licensed under the -Apache (Software) License, version 2.0 ("the License"). -See the License for details about distribution rights, and the -specific rights regarding derivative works. - -You may obtain a copy of the License at: - -http://www.apache.org/licenses/LICENSE-2.0 - - **************************************** - -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers. - -## Copyright - -Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - -## Licensing - -Jackson components are licensed under Apache (Software) License, version 2.0, -as per accompanying LICENSE file. - -## Credits - -A list of contributors may be found from CREDITS file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. - --------------------------------------------------------------------------------- - -31. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-csv Version: 2.15.3 - -Project URL: https://github.com/FasterXML/jackson-dataformats-text - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - -This copy of Jackson JSON processor CSV module is licensed under the -Apache (Software) License, version 2.0 ("the License"). -See the License for details about distribution rights, and the -specific rights regarding derivative works. - -You may obtain a copy of the License at: - -http://www.apache.org/licenses/LICENSE-2.0 - - **************************************** - -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers. - -## Copyright - -Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - -## Licensing - -Jackson components are licensed under Apache (Software) License, version 2.0, -as per accompanying LICENSE file. - -## Credits - -A list of contributors may be found from CREDITS file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. - --------------------------------------------------------------------------------- - -32. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-ion Version: 2.15.3 - -Project URL: https://github.com/FasterXML/jackson-dataformat-ion - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - -This copy of Jackson JSON processor Ion module is licensed under the -Apache (Software) License, version 2.0 ("the License"). -See the License for details about distribution rights, and the -specific rights regarding derivative works. - -You may obtain a copy of the License at: - -http://www.apache.org/licenses/LICENSE-2.0 - - **************************************** - -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers. - -## Copyright - -Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - -## Licensing - -Jackson components are licensed under Apache (Software) License, version 2.0, -as per accompanying LICENSE file. - -## Credits - -A list of contributors may be found from CREDITS file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -33. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-smile Version: 2.15.3 +25. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-xml Version: 2.17.2 -Project URL: https://github.com/FasterXML/jackson-dataformats-binary +Project URL: https://github.com/FasterXML/jackson-dataformat-xml POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** -This copy of Jackson JSON processor Smile module is licensed under the +This copy of Jackson JSON processor XML module is licensed under the Apache (Software) License, version 2.0 ("the License"). See the License for details about distribution rights, and the specific rights regarding derivative works. @@ -2255,7 +1548,7 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -34. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-yaml Version: 2.15.3 +26. Group: com.fasterxml.jackson.dataformat Name: jackson-dataformat-yaml Version: 2.17.2 Project URL: https://github.com/FasterXML/jackson-dataformats-text @@ -2302,7 +1595,7 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -35. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-guava Version: 2.15.3 +27. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-guava Version: 2.17.2 Project URL: https://github.com/FasterXML/jackson-datatypes-collections @@ -2325,7 +1618,7 @@ http://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -36. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-jdk8 Version: 2.15.3 +28. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-jdk8 Version: 2.17.2 Manifest Project URL: https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8 @@ -2368,7 +1661,7 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -37. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-joda Version: 2.15.3 +29. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-joda Version: 2.17.2 Project URL: https://github.com/FasterXML/jackson-datatype-joda @@ -2391,7 +1684,7 @@ http://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -38. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-jsr310 Version: 2.15.3 +30. Group: com.fasterxml.jackson.datatype Name: jackson-datatype-jsr310 Version: 2.17.2 Manifest Project URL: https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310 @@ -2434,7 +1727,7 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -39. Group: com.fasterxml.jackson.jaxrs Name: jackson-jaxrs-base Version: 2.15.3 +31. Group: com.fasterxml.jackson.jaxrs Name: jackson-jaxrs-base Version: 2.17.2 Manifest Project URL: https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-base @@ -2457,7 +1750,7 @@ http://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -40. Group: com.fasterxml.jackson.jaxrs Name: jackson-jaxrs-json-provider Version: 2.15.3 +32. Group: com.fasterxml.jackson.jaxrs Name: jackson-jaxrs-json-provider Version: 2.17.2 Manifest Project URL: https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-json-provider @@ -2503,7 +1796,7 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -41. Group: com.fasterxml.jackson.module Name: jackson-module-jaxb-annotations Version: 2.15.3 +33. Group: com.fasterxml.jackson.module Name: jackson-module-jaxb-annotations Version: 2.17.2 Project URL: https://github.com/FasterXML/jackson-modules-base @@ -2549,7 +1842,7 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -42. Group: com.fasterxml.jackson.module Name: jackson-module-parameter-names Version: 2.15.3 +34. Group: com.fasterxml.jackson.module Name: jackson-module-parameter-names Version: 2.17.2 Manifest Project URL: https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names @@ -2592,22 +1885,22 @@ from the source code management (SCM) system project uses. -------------------------------------------------------------------------------- -43. Group: com.fasterxml.jackson.module Name: jackson-module-scala_2.13 Version: 2.15.3 +35. Group: com.fasterxml.woodstox Name: woodstox-core Version: 5.4.0 -Manifest Project URL: https://www.javadoc.io/doc/com.fasterxml.jackson.module/jackson-module-scala_2.13/2.15.3/ +Project URL: https://github.com/FasterXML/woodstox -POM Project URL: https://github.com/FasterXML/jackson-module-scala +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** -This copy of Jackson JSON processor Scala module is licensed under the +This copy of Jackson JSON processor databind module is licensed under the Apache (Software) License, version 2.0 ("the License"). See the License for details about distribution rights, and the -specific rights regarding derivative works. +specific rights regarding derivate works. You may obtain a copy of the License at: @@ -2615,7 +1908,7 @@ http://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -44. Group: com.fasterxml.woodstox Name: woodstox-core Version: 5.4.0 +36. Group: com.fasterxml.woodstox Name: woodstox-core Version: 6.7.0 Project URL: https://github.com/FasterXML/woodstox @@ -2638,7 +1931,7 @@ http://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -45. Group: com.github.ben-manes.caffeine Name: caffeine Version: 2.9.3 +37. Group: com.github.ben-manes.caffeine Name: caffeine Version: 3.1.8 POM Project URL: https://github.com/ben-manes/caffeine @@ -2853,240 +2146,101 @@ Embedded license: -------------------------------------------------------------------------------- -46. Group: com.github.ben-manes.caffeine Name: caffeine Version: 3.1.8 +38. Group: com.github.erosb Name: everit-json-schema Version: 1.14.2 -POM Project URL: https://github.com/ben-manes/caffeine +POM Project URL: https://github.com/erosb/everit-json-schema -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Embedded license: +-------------------------------------------------------------------------------- - **************************************** +39. Group: com.github.erosb Name: everit-json-schema Version: 1.14.3 +POM Project URL: https://github.com/erosb/everit-json-schema - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +-------------------------------------------------------------------------------- - 1. Definitions. +40. Group: com.github.erosb Name: json-sKema Version: 0.10.0 - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +POM Project URL: https://github.com/erosb/json-sKema - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +POM License: MIT - https://opensource.org/license/mit/ - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +-------------------------------------------------------------------------------- - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +41. Group: com.github.java-json-tools Name: btf Version: 1.3 - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +POM Project URL: https://github.com/java-json-tools/btf - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +POM License: Lesser General Public License, version 3 or greater - http://www.gnu.org/licenses/lgpl.html - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +Embedded license: - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." + **************************************** - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +This software is dual-licensed under: - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +- the Lesser General Public License (LGPL) version 3.0 or, at your option, any + later version; +- the Apache Software License (ASL) version 2.0. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +The text of both licenses is included (under the names LGPL-3.0.txt and +ASL-2.0.txt respectively). - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +Direct link to the sources: - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +- LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt +- ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +-------------------------------------------------------------------------------- - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +42. Group: com.github.java-json-tools Name: jackson-coreutils Version: 2.0 - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +POM Project URL: https://github.com/java-json-tools/jackson-coreutils - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. +POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +POM License: Lesser General Public License, version 3 or greater - http://www.gnu.org/licenses/lgpl.html - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +Embedded license: - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + **************************************** - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +This software is dual-licensed under: - END OF TERMS AND CONDITIONS +- the Lesser General Public License (LGPL) version 3.0 or, at your option, any + later version; +- the Apache Software License (ASL) version 2.0. - APPENDIX: How to apply the Apache License to your work. +The text of both licenses is included (under the names LGPL-3.0.txt and +ASL-2.0.txt respectively). - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Direct link to the sources: - http://www.apache.org/licenses/LICENSE-2.0 +- LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt +- ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -------------------------------------------------------------------------------- -47. Group: com.github.erosb Name: everit-json-schema Version: 1.14.1 - -POM Project URL: https://github.com/erosb/everit-json-schema - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- +43. Group: com.github.java-json-tools Name: jackson-coreutils-equivalence Version: 1.0 -48. Group: com.github.erosb Name: everit-json-schema Version: 1.14.2 +POM Project URL: https://github.com/java-json-tools/jackson-coreutils -POM Project URL: https://github.com/erosb/everit-json-schema +POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Lesser General Public License, version 3 or greater - http://www.gnu.org/licenses/lgpl.html -------------------------------------------------------------------------------- -49. Group: com.github.fge Name: json-schema-validator Version: 2.2.14 +44. Group: com.github.java-json-tools Name: json-schema-core Version: 1.2.14 -POM Project URL: https://github.com/java-json-tools/json-schema-validator +POM Project URL: https://github.com/java-json-tools/json-schema-core POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 @@ -3113,9 +2267,9 @@ Direct link to the sources: -------------------------------------------------------------------------------- -50. Group: com.github.java-json-tools Name: btf Version: 1.3 +45. Group: com.github.java-json-tools Name: json-schema-validator Version: 2.2.14 -POM Project URL: https://github.com/java-json-tools/btf +POM Project URL: https://github.com/java-json-tools/json-schema-validator POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 @@ -3142,9 +2296,9 @@ Direct link to the sources: -------------------------------------------------------------------------------- -51. Group: com.github.java-json-tools Name: jackson-coreutils Version: 2.0 +46. Group: com.github.java-json-tools Name: msg-simple Version: 1.2 -POM Project URL: https://github.com/java-json-tools/jackson-coreutils +POM Project URL: https://github.com/java-json-tools/msg-simple POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 @@ -3171,19 +2325,9 @@ Direct link to the sources: -------------------------------------------------------------------------------- -52. Group: com.github.java-json-tools Name: jackson-coreutils-equivalence Version: 1.0 - -POM Project URL: https://github.com/java-json-tools/jackson-coreutils - -POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +47. Group: com.github.java-json-tools Name: uri-template Version: 0.10 -POM License: Lesser General Public License, version 3 or greater - http://www.gnu.org/licenses/lgpl.html - --------------------------------------------------------------------------------- - -53. Group: com.github.java-json-tools Name: json-schema-core Version: 1.2.14 - -POM Project URL: https://github.com/java-json-tools/json-schema-core +POM Project URL: https://github.com/java-json-tools/uri-template POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 @@ -3210,149 +2354,137 @@ Direct link to the sources: -------------------------------------------------------------------------------- -54. Group: com.github.java-json-tools Name: msg-simple Version: 1.2 +48. Group: com.github.luben Name: zstd-jni Version: 1.5.5-1 -POM Project URL: https://github.com/java-json-tools/msg-simple +POM Project URL: https://github.com/luben/zstd-jni -POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM License: BSD 2-Clause License - https://opensource.org/licenses/BSD-2-Clause -POM License: Lesser General Public License, version 3 or greater - http://www.gnu.org/licenses/lgpl.html +-------------------------------------------------------------------------------- -Embedded license: +49. Group: com.github.luben Name: zstd-jni Version: 1.5.6-2 - **************************************** +POM Project URL: https://github.com/luben/zstd-jni -This software is dual-licensed under: +POM License: BSD 2-Clause License - https://opensource.org/licenses/BSD-2-Clause -- the Lesser General Public License (LGPL) version 3.0 or, at your option, any - later version; -- the Apache Software License (ASL) version 2.0. +-------------------------------------------------------------------------------- -The text of both licenses is included (under the names LGPL-3.0.txt and -ASL-2.0.txt respectively). +50. Group: com.github.pjfanning Name: jersey-json Version: 1.20 -Direct link to the sources: +POM Project URL: https://github.com/pjfanning/jersey-1.x -- LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt -- ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: CDDL 1.1 - http://glassfish.java.net/public/CDDL+GPL_1_1.html +POM License: GPL2 w/ CPE - http://glassfish.java.net/public/CDDL+GPL_1_1.html -------------------------------------------------------------------------------- -55. Group: com.github.java-json-tools Name: uri-template Version: 0.10 +51. Group: com.github.seancfoley Name: ipaddress Version: 5.4.2 -POM Project URL: https://github.com/java-json-tools/uri-template +POM Project URL: https://seancfoley.github.io/IPAddress/ -POM License: Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -POM License: Lesser General Public License, version 3 or greater - http://www.gnu.org/licenses/lgpl.html +-------------------------------------------------------------------------------- -Embedded license: +52. Group: com.github.spullara.mustache.java Name: compiler Version: 0.9.10 - **************************************** +POM Project URL: http://github.com/spullara/mustache.java -This software is dual-licensed under: +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 -- the Lesser General Public License (LGPL) version 3.0 or, at your option, any - later version; -- the Apache Software License (ASL) version 2.0. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -The text of both licenses is included (under the names LGPL-3.0.txt and -ASL-2.0.txt respectively). +-------------------------------------------------------------------------------- -Direct link to the sources: +53. Group: com.github.stephenc.jcip Name: jcip-annotations Version: 1.0-1 -- LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt -- ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: http://stephenc.github.com/jcip-annotations +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -56. Group: com.github.luben Name: zstd-jni Version: 1.5.0-1 +54. Group: com.github.ua-parser Name: uap-java Version: 1.6.1 -POM Project URL: https://github.com/luben/zstd-jni +POM Project URL: https://github.com/ua-parser/uap-java -POM License: BSD 2-Clause License - https://opensource.org/licenses/BSD-2-Clause +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -57. Group: com.github.luben Name: zstd-jni Version: 1.5.2-1 +55. Group: com.github.victools Name: jsonschema-generator Version: 4.35.0 -POM Project URL: https://github.com/luben/zstd-jni +POM Project URL: https://github.com/victools/jsonschema-generator -POM License: BSD 2-Clause License - https://opensource.org/licenses/BSD-2-Clause +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -58. Group: com.github.luben Name: zstd-jni Version: 1.5.5-1 - -POM Project URL: https://github.com/luben/zstd-jni +56. Group: com.github.victools Name: jsonschema-maven-plugin Version: 4.35.0 -POM License: BSD 2-Clause License - https://opensource.org/licenses/BSD-2-Clause +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -59. Group: com.github.pjfanning Name: jersey-json Version: 1.20 +57. Group: com.github.victools Name: jsonschema-module-jackson Version: 4.35.0 -POM Project URL: https://github.com/pjfanning/jersey-1.x - -POM License: CDDL 1.1 - http://glassfish.java.net/public/CDDL+GPL_1_1.html +POM Project URL: https://github.com/victools/jsonschema-generator -POM License: GPL2 w/ CPE - http://glassfish.java.net/public/CDDL+GPL_1_1.html +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -60. Group: com.github.seancfoley Name: ipaddress Version: 5.4.0 +58. Group: com.github.victools Name: jsonschema-module-jakarta-validation Version: 4.35.0 -POM Project URL: https://seancfoley.github.io/IPAddress/ - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -61. Group: com.github.spullara.mustache.java Name: compiler Version: 0.9.10 +59. Group: com.github.victools Name: jsonschema-module-javax-validation Version: 4.35.0 -POM Project URL: http://github.com/spullara/mustache.java +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +-------------------------------------------------------------------------------- -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +60. Group: com.github.victools Name: jsonschema-module-swagger-1.5 Version: 4.35.0 --------------------------------------------------------------------------------- +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -62. Group: com.github.stephenc.jcip Name: jcip-annotations Version: 1.0-1 +-------------------------------------------------------------------------------- -POM Project URL: http://stephenc.github.com/jcip-annotations +61. Group: com.github.victools Name: jsonschema-module-swagger-2 Version: 4.35.0 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -63. Group: com.github.ua-parser Name: uap-java Version: 1.5.4 +62. Group: com.github.wnameless.json Name: json-base Version: 2.4.3 -POM Project URL: https://github.com/ua-parser/uap-java +POM Project URL: https://github.com/wnameless/json-base -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -64. Group: com.google.android Name: annotations Version: 4.1.1.4 +63. Group: com.github.wnameless.json Name: json-flattener Version: 0.16.6 -POM Project URL: http://source.android.com/ +POM Project URL: https://github.com/wnameless/json-flattener -POM License: Apache 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -65. Group: com.google.api.grpc Name: proto-google-common-protos Version: 2.17.0 +64. Group: com.google.android Name: annotations Version: 4.1.1.4 -POM Project URL: https://github.com/googleapis/gapic-generator-java +POM Project URL: http://source.android.com/ -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache 2.0 - http://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -66. Group: com.google.api.grpc Name: proto-google-common-protos Version: 2.22.1 +65. Group: com.google.api.grpc Name: proto-google-common-protos Version: 2.29.0 POM Project URL: https://github.com/googleapis/sdk-platform-java @@ -3360,7 +2492,7 @@ POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -67. Group: com.google.api.grpc Name: proto-google-common-protos Version: 2.7.4 +66. Group: com.google.api.grpc Name: proto-google-common-protos Version: 2.7.4 POM Project URL: https://github.com/googleapis/java-iam/proto-google-common-protos @@ -3368,7 +2500,7 @@ POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -68. Group: com.google.code.findbugs Name: jsr305 Version: 3.0.2 +67. Group: com.google.code.findbugs Name: jsr305 Version: 3.0.2 POM Project URL: http://findbugs.sourceforge.net/ @@ -3376,7 +2508,7 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -69. Group: com.google.code.gson Name: gson Version: 2.10.1 +68. Group: com.google.code.gson Name: gson Version: 2.10.1 Manifest Project URL: https://github.com/google/gson/gson @@ -3386,7 +2518,7 @@ POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -70. Group: com.google.code.gson Name: gson Version: 2.8.9 +69. Group: com.google.code.gson Name: gson Version: 2.8.9 Manifest Project URL: https://github.com/google/gson/gson @@ -3396,7 +2528,7 @@ POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -71. Group: com.google.code.gson Name: gson Version: 2.9.0 +70. Group: com.google.code.gson Name: gson Version: 2.9.0 Manifest Project URL: https://github.com/google/gson/gson @@ -3406,29 +2538,23 @@ POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -72. Group: com.google.crypto.tink Name: tink Version: 1.10.0 - -POM Project URL: http://github.com/tink-crypto/tink-java +71. Group: com.google.errorprone Name: error_prone_annotations Version: 2.18.0 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -73. Group: com.google.crypto.tink Name: tink Version: 1.9.0 +72. Group: com.google.errorprone Name: error_prone_annotations Version: 2.21.1 -POM Project URL: http://github.com/tink-crypto/tink-java - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- +Manifest Project URL: https://errorprone.info/error_prone_annotations -74. Group: com.google.errorprone Name: error_prone_annotations Version: 2.18.0 +Manifest License: "Apache 2.0";link="http://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) POM License: Apache 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -75. Group: com.google.errorprone Name: error_prone_annotations Version: 2.21.1 +73. Group: com.google.errorprone Name: error_prone_annotations Version: 2.23.0 Manifest Project URL: https://errorprone.info/error_prone_annotations @@ -3438,7 +2564,7 @@ POM License: Apache 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -76. Group: com.google.guava Name: failureaccess Version: 1.0.1 +74. Group: com.google.guava Name: failureaccess Version: 1.0.1 Manifest Project URL: https://github.com/google/guava/ @@ -3446,7 +2572,7 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -77. Group: com.google.guava Name: guava Version: 32.1.2-jre +75. Group: com.google.guava Name: guava Version: 32.1.2-jre Manifest Project URL: https://github.com/google/guava/ @@ -3663,236 +2789,16 @@ Embedded license: -------------------------------------------------------------------------------- -78. Group: com.google.guava Name: guava-parent Version: 32.1.2-jre +76. Group: com.google.guava Name: guava Version: 32.1.3-jre -No license information found - -79. Group: com.google.guava Name: listenablefuture Version: 9999.0-empty-to-avoid-conflict-with-guava - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -80. Group: com.google.http-client Name: google-http-client Version: 1.43.1 - -Manifest Project URL: https://www.google.com/ - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -81. Group: com.google.inject Name: guice Version: 4.0 +Manifest Project URL: https://github.com/google/guava/ -Manifest Project URL: https://github.com/google/guice +POM Project URL: https://github.com/google/guava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: - **************************************** - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - **************************************** @@ -4098,25 +3004,245 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +77. Group: com.google.guava Name: guava-parent Version: 32.1.2-jre + +No license information found + +78. Group: com.google.guava Name: listenablefuture Version: 9999.0-empty-to-avoid-conflict-with-guava + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +79. Group: com.google.inject Name: guice Version: 4.2.3 + +Manifest Project URL: https://github.com/google/guice + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + **************************************** -Google Guice - Core Library -Copyright 2006-2015 Google, Inc. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. **************************************** -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). + +Google Guice - Core Library +Copyright 2006-2020 Google, Inc. + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + -------------------------------------------------------------------------------- -82. Group: com.google.inject.extensions Name: guice-servlet Version: 4.0 +80. Group: com.google.inject.extensions Name: guice-servlet Version: 4.2.3 Manifest Project URL: https://github.com/google/guice @@ -4333,7 +3459,7 @@ Embedded license: Google Guice - Extensions - Servlet -Copyright 2006-2015 Google, Inc. +Copyright 2006-2020 Google, Inc. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -4342,7 +3468,7 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -83. Group: com.google.j2objc Name: j2objc-annotations Version: 2.8 +81. Group: com.google.j2objc Name: j2objc-annotations Version: 2.8 POM Project URL: https://github.com/google/j2objc/ @@ -4350,7 +3476,7 @@ POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENS -------------------------------------------------------------------------------- -84. Group: com.google.jimfs Name: jimfs Version: 1.1 +82. Group: com.google.jimfs Name: jimfs Version: 1.1 Manifest Project URL: http://www.google.com/ @@ -4358,7 +3484,7 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -85. Group: com.google.protobuf Name: protobuf-java Version: 3.21.11 +83. Group: com.google.protobuf Name: protobuf-java Version: 3.21.11 Manifest Project URL: https://developers.google.com/protocol-buffers/ @@ -4366,7 +3492,7 @@ POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- -86. Group: com.google.protobuf Name: protobuf-java Version: 3.23.2 +84. Group: com.google.protobuf Name: protobuf-java Version: 3.21.12 Manifest Project URL: https://developers.google.com/protocol-buffers/ @@ -4374,7 +3500,7 @@ POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- -87. Group: com.google.protobuf Name: protobuf-java Version: 3.24.0 +85. Group: com.google.protobuf Name: protobuf-java Version: 3.24.3 Manifest Project URL: https://developers.google.com/protocol-buffers/ @@ -4382,7 +3508,7 @@ POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- -88. Group: com.google.protobuf Name: protobuf-java Version: 3.24.3 +86. Group: com.google.protobuf Name: protobuf-java Version: 3.25.1 Manifest Project URL: https://developers.google.com/protocol-buffers/ @@ -4390,15 +3516,15 @@ POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- -89. Group: com.google.protobuf Name: protobuf-java-util Version: 3.19.6 +87. Group: com.google.protobuf Name: protobuf-java Version: 3.25.2 Manifest Project URL: https://developers.google.com/protocol-buffers/ -POM License: 3-Clause BSD License - https://opensource.org/licenses/BSD-3-Clause +POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- -90. Group: com.google.protobuf Name: protobuf-java-util Version: 3.24.0 +88. Group: com.google.protobuf Name: protobuf-java-util Version: 3.24.3 Manifest Project URL: https://developers.google.com/protocol-buffers/ @@ -4406,7 +3532,7 @@ POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- -91. Group: com.google.protobuf Name: protobuf-java-util Version: 3.24.3 +89. Group: com.google.protobuf Name: protobuf-java-util Version: 3.25.1 Manifest Project URL: https://developers.google.com/protocol-buffers/ @@ -4414,7 +3540,7 @@ POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- -92. Group: com.google.re2j Name: re2j Version: 1.1 +90. Group: com.google.re2j Name: re2j Version: 1.1 POM Project URL: http://github.com/google/re2j @@ -4422,7 +3548,7 @@ POM License: The Go license - https://golang.org/LICENSE -------------------------------------------------------------------------------- -93. Group: com.google.re2j Name: re2j Version: 1.6 +91. Group: com.google.re2j Name: re2j Version: 1.6 POM Project URL: http://github.com/google/re2j @@ -4430,7 +3556,7 @@ POM License: Go License - https://golang.org/LICENSE -------------------------------------------------------------------------------- -94. Group: com.googlecode.libphonenumber Name: libphonenumber Version: 8.11.1 +92. Group: com.googlecode.libphonenumber Name: libphonenumber Version: 8.11.1 Manifest Project URL: http://www.google.com/ @@ -4440,7 +3566,7 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -95. Group: com.ibm.icu Name: icu4j Version: 69.1 +93. Group: com.ibm.icu Name: icu4j Version: 69.1 POM Project URL: http://icu-project.org/ @@ -4867,7 +3993,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- -96. Group: com.jcraft Name: jsch Version: 0.1.55 +94. Group: com.jayway.jsonpath Name: json-path Version: 2.9.0 + +POM Project URL: https://github.com/jayway/JsonPath + +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +95. Group: com.jcraft Name: jsch Version: 0.1.55 POM Project URL: http://www.jcraft.com/jsch/ @@ -4875,7 +4009,7 @@ POM License: Revised BSD - http://www.jcraft.com/jsch/LICENSE.txt -------------------------------------------------------------------------------- -97. Group: com.kjetland Name: mbknor-jackson-jsonschema_2.12 Version: 1.0.39 +96. Group: com.kjetland Name: mbknor-jackson-jsonschema_2.12 Version: 1.0.39 POM Project URL: https://github.com/mbknor/mbknor-jackson-jsonSchema @@ -4883,7 +4017,7 @@ POM License: MIT - https://github.com/mbknor/mbknor-jackson-jsonSchema/blob/mast -------------------------------------------------------------------------------- -98. Group: com.kjetland Name: mbknor-jackson-jsonschema_2.13 Version: 1.0.39 +97. Group: com.kjetland Name: mbknor-jackson-jsonschema_2.13 Version: 1.0.39 POM Project URL: https://github.com/mbknor/mbknor-jackson-jsonSchema @@ -4891,7 +4025,7 @@ POM License: MIT - https://github.com/mbknor/mbknor-jackson-jsonSchema/blob/mast -------------------------------------------------------------------------------- -99. Group: com.linecorp.armeria Name: armeria Version: 1.25.2 +98. Group: com.linecorp.armeria Name: armeria Version: 1.29.0 POM Project URL: https://armeria.dev/ @@ -5106,7 +4240,7 @@ Embedded license: -------------------------------------------------------------------------------- -100. Group: com.linecorp.armeria Name: armeria-grpc Version: 1.25.2 +99. Group: com.linecorp.armeria Name: armeria-grpc Version: 1.29.0 POM Project URL: https://armeria.dev/ @@ -5114,7 +4248,7 @@ POM License: The Apache License, Version 2.0 - https://www.apache.org/license/LI -------------------------------------------------------------------------------- -101. Group: com.linecorp.armeria Name: armeria-grpc-protocol Version: 1.25.2 +100. Group: com.linecorp.armeria Name: armeria-grpc-protocol Version: 1.29.0 POM Project URL: https://armeria.dev/ @@ -5122,7 +4256,7 @@ POM License: The Apache License, Version 2.0 - https://www.apache.org/license/LI -------------------------------------------------------------------------------- -102. Group: com.linecorp.armeria Name: armeria-protobuf Version: 1.25.2 +101. Group: com.linecorp.armeria Name: armeria-protobuf Version: 1.29.0 POM Project URL: https://armeria.dev/ @@ -5130,7 +4264,23 @@ POM License: The Apache License, Version 2.0 - https://www.apache.org/license/LI -------------------------------------------------------------------------------- -103. Group: com.mysql Name: mysql-connector-j Version: 8.0.33 +102. Group: com.maxmind.db Name: maxmind-db Version: 3.1.0 + +POM Project URL: http://dev.maxmind.com/ + +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + +-------------------------------------------------------------------------------- + +103. Group: com.maxmind.geoip2 Name: geoip2 Version: 4.2.0 + +POM Project URL: https://dev.maxmind.com/geoip?lang=en + +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.html + +-------------------------------------------------------------------------------- + +104. Group: com.mysql Name: mysql-connector-j Version: 8.4.0 POM Project URL: http://dev.mysql.com/doc/connector-j/en/ @@ -5140,7 +4290,7 @@ POM License: The GNU General Public License, v2 with Universal FOSS Exception, v Licensing Information User Manual -MySQL Connector/J 8.0 +MySQL Connector/J 8.4.0 Community __________________________________________________________________ Introduction @@ -5148,24 +4298,25 @@ Introduction This License Information User Manual contains Oracle's product license and other licensing information, including licensing information for third-party software which may be included in this distribution of - MySQL Connector/J 8.0. + MySQL Connector/J 8.4.0 Community. - Last updated: February 2023 + Last updated: March 2024 Licensing Information - This is a release of MySQL Connector/J 8.0, brought to you by the MySQL - team at Oracle. This software is released under version 2 of the GNU - General Public License (GPLv2), as set forth below, with the following - additional permissions: + This release of MySQL Connector/J 8.4.0 Community is brought to you by + the MySQL team at Oracle. This software is released under version 2 of + the GNU General Public License (GPLv2), as set forth below, with the + following additional permissions: - This distribution of MySQL Connector/J 8.0 is distributed with certain - software that is licensed under separate terms, as designated in a - particular file or component or in the license documentation. Without - limiting your rights under the GPLv2, the authors of MySQL hereby grant - you an additional permission to link the program and your derivative - works with the separately licensed software that they have included - with the program. + This distribution of MySQL Connector/J 8.4.0 Community is designed to + work with certain software that is licensed under separate terms, as + designated in a particular file or component or in the license + documentation. Without limiting your rights under the GPLv2, the + authors of MySQL hereby grant you an additional permission to link the + program and your derivative works with the separately licensed software + that they have either included with the program or referenced in the + documentation. Without limiting the foregoing grant of rights under the GPLv2 and additional permission as to separately licensed software, this @@ -5173,7 +4324,7 @@ Licensing Information a copy of which is reproduced below and can also be found along with its FAQ at http://oss.oracle.com/licenses/universal-foss-exception. - Copyright (c) 2017, 2023, Oracle and/or its affiliates. + Copyright (c) 2017, 2024, Oracle and/or its affiliates. Election of GPLv2 @@ -5911,6 +5062,28 @@ support library is itself covered by the above license. ====================================================================== ====================================================================== +opentelemetry-java + +You may be receiving a copy of the opentelemetry-java library with this +MySQL product. + +The terms of the Oracle license do NOT apply to the opentelemetry-java library; +it is licensed under the following license, separately from the Oracle programs +you receive. + +If you do not wish to install this program, you may delete its files but the +Oracle program might not operate properly or at all without it. + +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +See Apache License v2.0, January 2004 in the 'Standard Licenses' section. + + ====================================================================== + ====================================================================== + Unicode Data Files COPYRIGHT AND PERMISSION NOTICE @@ -6477,6 +5650,219 @@ That's all there is to it! ====================================================================== ====================================================================== +Apache License v2.0, January 2004 + +The following applies to all products licensed under the Apache 2.0 +License: You may not use the identified files except in compliance +with the Apache License, Version 2.0 (the "License.") You may obtain a +copy of the License at http://www.apache.org/licenses/LICENSE-2.0. A +copy of the license is also reproduced below. Unless required by +applicable law or agreed to in writing, software distributed under the +License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for +the specific language governing permissions and limitations under the +License. + +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the +copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other +entities that control, are controlled by, or are under common control +with that entity. For the purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or +management of such entity, whether by contract or otherwise, or (ii) +ownership of fifty percent (50%) or more of the outstanding shares, or +(iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but not +limited to compiled object code, generated documentation, and +conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object +form, made available under the License, as indicated by a copyright +notice that is included in or attached to the work (an example is +provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the +purposes of this License, Derivative Works shall not include works +that remain separable from, or merely link (or bind by name) to the +interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the +original version of the Work and any modifications or additions to +that Work or Derivative Works thereof, that is intentionally submitted +to Licensor for inclusion in the Work by the copyright owner or by an +individual or Legal Entity authorized to submit on behalf of the +copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent to +the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control +systems, and issue tracking systems that are managed by, or on behalf +of, the Licensor for the purpose of discussing and improving the Work, +but excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, publicly +display, publicly perform, sublicense, and distribute the Work and +such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except +as stated in this section) patent license to make, have made, use, +offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work to +which such Contribution(s) was submitted. If You institute patent +litigation against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent +infringement, then any patent licenses granted to You under this +License for that Work shall terminate as of the date such litigation +is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work +or Derivative Works thereof in any medium, with or without +modifications, and in Source or Object form, provided that You meet +the following conditions: + +(a) You must give any other recipients of the Work or Derivative Works +a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works that +You distribute, all copyright, patent, trademark, and attribution +notices from the Source form of the Work, excluding those notices that +do not pertain to any part of the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained + +within such NOTICE file, excluding those notices that do not pertain +to any part of the Derivative Works, in at least one of the following +places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided +along with the Derivative Works; or, within a display generated by the +Derivative Works, if and wherever such third-party notices normally +appear. The contents of the NOTICE file are for informational purposes +only and do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside or as +an addendum to the NOTICE text from the Work, provided that such +additional attribution notices cannot be construed as modifying the +License. + +You may add Your own copyright statement to Your modifications and may +provide additional or different license terms and conditions for use, +reproduction, or distribution of Your modifications, or for any such +Derivative Works as a whole, provided Your use, reproduction, and +distribution of the Work otherwise complies with the conditions stated +in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work by +You to the Licensor shall be under the terms and conditions of this +License, without any additional terms or conditions. Notwithstanding +the above, nothing herein shall supersede or modify the terms of any +separate license agreement you may have executed with Licensor +regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed +to in writing, Licensor provides the Work (and each Contributor +provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied, including, without +limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, +MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely +responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your +exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, unless +required by applicable law (such as deliberate and grossly negligent +acts) or agreed to in writing, shall any Contributor be liable to You +for damages, including any direct, indirect, special, incidental, or +consequential damages of any character arising as a result of this +License or out of the use or inability to use the Work (including but +not limited to damages for loss of goodwill, work stoppage, computer +failure or malfunction, or any and all other commercial damages or +losses), even if such Contributor has been advised of the possibility +of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, and +charge a fee for, acceptance of support, warranty, indemnity, or other +liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only on +Your own behalf and on Your sole responsibility, not on behalf of any +other Contributor, and only if You agree to indemnify, defend, and +hold each Contributor harmless for any liability incurred by, or +claims asserted against, such Contributor by reason of your accepting +any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included +on the same "printed page" as the copyright notice for easier identification +within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied. See the License for the specific language governing permissions +and limitations under the License. + + ====================================================================== + ====================================================================== + Written Offer for Source Code For any software that you receive from Oracle in binary form which is @@ -6527,7 +5913,7 @@ Written Offer for Source Code **************************************** -Copyright (c) 2000, 2023, Oracle and/or its affiliates. +Copyright (c) 2000, 2024, Oracle and/or its affiliates. This is a release of MySQL Connector/J, a JDBC Type 4 driver for MySQL that also supports the new X DevAPI. @@ -6539,7 +5925,7 @@ For license and attribution notices for these materials, please refer to the LICENSE file. For more information on MySQL Connector/J, visit - https://dev.mysql.com/doc/connector-j/8.0/en/ + https://dev.mysql.com/doc/connector-j/en/ For additional downloads and the source of MySQL Connector/J, visit https://dev.mysql.com/downloads/ @@ -6563,7 +5949,7 @@ Notice: -------------------------------------------------------------------------------- -104. Group: com.nimbusds Name: nimbus-jose-jwt Version: 9.8.1 +105. Group: com.nimbusds Name: nimbus-jose-jwt Version: 9.37.1 Manifest Project URL: https://connect2id.com @@ -6573,31 +5959,33 @@ POM License: The Apache Software License, Version 2.0 - https://www.apache.org/l -------------------------------------------------------------------------------- -105. Group: com.opencsv Name: opencsv Version: 5.8 +106. Group: com.nimbusds Name: nimbus-jose-jwt Version: 9.37.2 -POM Project URL: http://opencsv.sf.net +Manifest Project URL: https://connect2id.com -POM License: Apache 2 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://bitbucket.org/connect2id/nimbus-jose-jwt + +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -106. Group: com.squareup Name: javapoet Version: 1.13.0 +107. Group: com.opencsv Name: opencsv Version: 5.9 -POM Project URL: http://github.com/square/javapoet/ +POM Project URL: http://opencsv.sf.net -POM License: Apache 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache 2 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -107. Group: com.squareup Name: kotlinpoet Version: 1.12.0 +108. Group: com.squareup Name: javapoet Version: 1.13.0 -POM Project URL: https://github.com/square/kotlinpoet +POM Project URL: http://github.com/square/javapoet/ -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -108. Group: com.squareup Name: kotlinpoet Version: 1.14.2 +109. Group: com.squareup Name: kotlinpoet Version: 1.10.2 POM Project URL: https://github.com/square/kotlinpoet @@ -6605,15 +5993,15 @@ POM License: The Apache Software License, Version 2.0 - https://www.apache.org/l -------------------------------------------------------------------------------- -109. Group: com.squareup.okio Name: okio Version: 3.0.0 +110. Group: com.squareup.okio Name: okio Version: 3.4.0 No license information found -110. Group: com.squareup.okio Name: okio Version: 3.4.0 +111. Group: com.squareup.okio Name: okio-fakefilesystem Version: 3.2.0 No license information found -111. Group: com.squareup.okio Name: okio-jvm Version: 3.5.0 +112. Group: com.squareup.okio Name: okio-fakefilesystem-jvm Version: 3.2.0 POM Project URL: https://github.com/square/okio/ @@ -6621,55 +6009,39 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -112. Group: com.squareup.wire Name: wire-compiler Version: 3.7.1 - -POM Project URL: https://github.com/square/wire +113. Group: com.squareup.okio Name: okio-jvm Version: 3.5.0 -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -113. Group: com.squareup.wire Name: wire-grpc-server-generator Version: 3.7.1 - -POM Project URL: https://github.com/square/wire +POM Project URL: https://github.com/square/okio/ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -114. Group: com.squareup.wire Name: wire-java-generator Version: 3.7.1 +114. Group: com.squareup.wire Name: wire-compiler Version: 4.3.0 -POM Project URL: https://github.com/square/wire +POM Project URL: https://github.com/square/wire/ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -115. Group: com.squareup.wire Name: wire-kotlin-generator Version: 3.7.1 +115. Group: com.squareup.wire Name: wire-grpc-server-generator Version: 4.3.0 -POM Project URL: https://github.com/square/wire +POM Project URL: https://github.com/square/wire/ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -116. Group: com.squareup.wire Name: wire-profiles Version: 3.7.1 +116. Group: com.squareup.wire Name: wire-java-generator Version: 4.3.0 -POM Project URL: https://github.com/square/wire +POM Project URL: https://github.com/square/wire/ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -117. Group: com.squareup.wire Name: wire-runtime Version: 4.4.3 - -No license information found - -118. Group: com.squareup.wire Name: wire-runtime Version: 4.8.0 - -No license information found - -119. Group: com.squareup.wire Name: wire-runtime-jvm Version: 4.4.3 +117. Group: com.squareup.wire Name: wire-kotlin-generator Version: 4.3.0 POM Project URL: https://github.com/square/wire/ @@ -6677,7 +6049,7 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -120. Group: com.squareup.wire Name: wire-runtime-jvm Version: 4.8.0 +118. Group: com.squareup.wire Name: wire-profiles Version: 4.3.0 POM Project URL: https://github.com/square/wire/ @@ -6685,27 +6057,23 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -121. Group: com.squareup.wire Name: wire-runtime-multiplatform Version: 3.7.1 +119. Group: com.squareup.wire Name: wire-runtime Version: 4.3.0 No license information found -122. Group: com.squareup.wire Name: wire-schema Version: 3.7.1 +120. Group: com.squareup.wire Name: wire-runtime-jvm Version: 4.3.0 -POM Project URL: https://github.com/square/wire +POM Project URL: https://github.com/square/wire/ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -123. Group: com.squareup.wire Name: wire-schema-jvm Version: 4.4.3 +121. Group: com.squareup.wire Name: wire-schema Version: 4.3.0 -POM Project URL: https://github.com/square/wire/ - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- +No license information found -124. Group: com.squareup.wire Name: wire-schema-jvm Version: 4.8.0 +122. Group: com.squareup.wire Name: wire-schema-jvm Version: 4.3.0 POM Project URL: https://github.com/square/wire/ @@ -6713,15 +6081,15 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -125. Group: com.squareup.wire Name: wire-swift-generator Version: 3.7.1 +123. Group: com.squareup.wire Name: wire-swift-generator Version: 4.3.0 -POM Project URL: https://github.com/square/wire +POM Project URL: https://github.com/square/wire/ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -126. Group: com.sun.jersey Name: jersey-client Version: 1.19.4 +124. Group: com.sun.jersey Name: jersey-client Version: 1.19.4 Manifest Project URL: http://www.oracle.com/ @@ -6731,7 +6099,7 @@ POM License: GPL2 w/ CPE - http://glassfish.java.net/public/CDDL+GPL_1_1.html -------------------------------------------------------------------------------- -127. Group: com.sun.jersey Name: jersey-core Version: 1.19.4 +125. Group: com.sun.jersey Name: jersey-core Version: 1.19.4 Manifest Project URL: http://www.oracle.com/ @@ -6741,7 +6109,7 @@ POM License: GPL2 w/ CPE - http://glassfish.java.net/public/CDDL+GPL_1_1.html -------------------------------------------------------------------------------- -128. Group: com.sun.jersey Name: jersey-server Version: 1.19.4 +126. Group: com.sun.jersey Name: jersey-server Version: 1.19.4 Manifest Project URL: http://www.oracle.com/ @@ -6751,7 +6119,7 @@ POM License: GPL2 w/ CPE - http://glassfish.java.net/public/CDDL+GPL_1_1.html -------------------------------------------------------------------------------- -129. Group: com.sun.jersey Name: jersey-servlet Version: 1.19.4 +127. Group: com.sun.jersey Name: jersey-servlet Version: 1.19.4 Manifest Project URL: http://www.oracle.com/ @@ -6761,7 +6129,7 @@ POM License: GPL2 w/ CPE - http://glassfish.java.net/public/CDDL+GPL_1_1.html -------------------------------------------------------------------------------- -130. Group: com.sun.jersey.contribs Name: jersey-guice Version: 1.19.4 +128. Group: com.sun.jersey.contribs Name: jersey-guice Version: 1.19.4 Manifest Project URL: http://www.oracle.com/ @@ -6771,7 +6139,7 @@ POM License: GPL2 w/ CPE - http://glassfish.java.net/public/CDDL+GPL_1_1.html -------------------------------------------------------------------------------- -131. Group: com.sun.mail Name: mailapi Version: 1.6.2 +129. Group: com.sun.mail Name: mailapi Version: 1.6.2 Manifest Project URL: http://www.oracle.com @@ -7543,7 +6911,7 @@ from your version. -------------------------------------------------------------------------------- -132. Group: com.sun.xml.bind Name: jaxb-impl Version: 2.2.3-1 +130. Group: com.sun.xml.bind Name: jaxb-impl Version: 2.2.3-1 POM Project URL: http://jaxb.java.net/ @@ -7553,7 +6921,7 @@ POM License: GPL2 w/ CPE - https://glassfish.java.net/public/CDDL+GPL_1_1.html -------------------------------------------------------------------------------- -133. Group: com.tdunning Name: t-digest Version: 3.2 +131. Group: com.tdunning Name: t-digest Version: 3.2 POM Project URL: https://github.com/tdunning/t-digest @@ -7561,265 +6929,243 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -134. Group: com.thoughtworks.paranamer Name: paranamer Version: 2.8 +132. Group: com.zendesk Name: mysql-binlog-connector-java Version: 0.29.2 -Manifest License: LICENSE.txt (Not packaged) +POM Project URL: https://github.com/osheroff/mysql-binlog-connector-java -POM License: BSDLicense: LICENSE.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -135. Group: com.typesafe.scala-logging Name: scala-logging_2.13 Version: 3.9.4 +133. Group: commons-beanutils Name: commons-beanutils Version: 1.9.4 -POM Project URL: https://github.com/lightbend/scala-logging +Project URL: https://commons.apache.org/proper/commons-beanutils/ -POM License: Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt --------------------------------------------------------------------------------- +Embedded license: -136. Group: com.yammer.metrics Name: metrics-core Version: 2.2.0 + **************************************** -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -137. Group: com.zendesk Name: mysql-binlog-connector-java Version: 0.28.1 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM Project URL: https://github.com/osheroff/mysql-binlog-connector-java + 1. Definitions. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + **************************************** + +Apache Commons BeanUtils +Copyright 2000-2019 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -138. Group: commons-beanutils Name: commons-beanutils Version: 1.9.4 +134. Group: commons-cli Name: commons-cli Version: 1.5.0 -Project URL: https://commons.apache.org/proper/commons-beanutils/ +Project URL: https://commons.apache.org/proper/commons-cli/ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Commons BeanUtils -Copyright 2000-2019 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - --------------------------------------------------------------------------------- - -139. Group: commons-cli Name: commons-cli Version: 1.2 - -Project URL: http://commons.apache.org/cli/ - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - Embedded license: **************************************** @@ -8030,16 +7376,16 @@ Embedded license: **************************************** Apache Commons CLI -Copyright 2001-2009 The Apache Software Foundation +Copyright 2002-2021 The Apache Software Foundation -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -140. Group: commons-cli Name: commons-cli Version: 1.4 +135. Group: commons-codec Name: commons-codec Version: 1.15 -Project URL: http://commons.apache.org/proper/commons-cli/ +Project URL: https://commons.apache.org/proper/commons-codec/ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -8047,6 +7393,7 @@ Embedded license: **************************************** + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -8249,22 +7596,33 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** -Apache Commons CLI -Copyright 2001-2017 The Apache Software Foundation +Apache Commons Codec +Copyright 2002-2020 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +The Apache Software Foundation (https://www.apache.org/). + +src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java +contains test data from http://aspell.net/test/orig/batch0.tab. +Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org) + +=============================================================================== + +The content of package org.apache.commons.codec.language.bm has been translated +from the original php source code available at http://stevemorse.org/phoneticinfo.htm +with permission from the original authors. +Original source copyright: +Copyright (c) 2008 Alexander Beider & Stephen P. Morse. -------------------------------------------------------------------------------- -141. Group: commons-codec Name: commons-codec Version: 1.15 +136. Group: commons-codec Name: commons-codec Version: 1.16.0 Project URL: https://commons.apache.org/proper/commons-codec/ -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -8476,26 +7834,14 @@ Embedded license: **************************************** Apache Commons Codec -Copyright 2002-2020 The Apache Software Foundation +Copyright 2002-2023 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (https://www.apache.org/). -src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java -contains test data from http://aspell.net/test/orig/batch0.tab. -Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org) - -=============================================================================== - -The content of package org.apache.commons.codec.language.bm has been translated -from the original php source code available at http://stevemorse.org/phoneticinfo.htm -with permission from the original authors. -Original source copyright: -Copyright (c) 2008 Alexander Beider & Stephen P. Morse. - -------------------------------------------------------------------------------- -142. Group: commons-codec Name: commons-codec Version: 1.16.0 +137. Group: commons-codec Name: commons-codec Version: 1.17.1 Project URL: https://commons.apache.org/proper/commons-codec/ @@ -8711,14 +8057,14 @@ Embedded license: **************************************** Apache Commons Codec -Copyright 2002-2023 The Apache Software Foundation +Copyright 2002-2024 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -143. Group: commons-collections Name: commons-collections Version: 3.2.2 +138. Group: commons-collections Name: commons-collections Version: 3.2.2 Project URL: http://commons.apache.org/collections/ @@ -8941,7 +8287,7 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -144. Group: commons-digester Name: commons-digester Version: 2.1 +139. Group: commons-digester Name: commons-digester Version: 2.1 Project URL: http://commons.apache.org/digester/ @@ -9164,7 +8510,7 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -145. Group: commons-io Name: commons-io Version: 2.13.0 +140. Group: commons-io Name: commons-io Version: 2.15.1 Project URL: https://commons.apache.org/proper/commons-io/ @@ -9388,7 +8734,7 @@ The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -146. Group: commons-logging Name: commons-logging Version: 1.2 +141. Group: commons-logging Name: commons-logging Version: 1.2 Project URL: http://commons.apache.org/proper/commons-logging/ @@ -9612,7 +8958,230 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -147. Group: commons-net Name: commons-net Version: 3.9.0 +142. Group: commons-logging Name: commons-logging Version: 1.3.2 + +Project URL: https://commons.apache.org/proper/commons-logging/ + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + **************************************** + +Apache Commons Logging +Copyright 2001-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). + +-------------------------------------------------------------------------------- + +143. Group: commons-net Name: commons-net Version: 3.9.0 Project URL: https://commons.apache.org/proper/commons-net/ @@ -9835,7 +9404,7 @@ The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -148. Group: commons-pool Name: commons-pool Version: 1.6 +144. Group: commons-pool Name: commons-pool Version: 1.6 Project URL: http://commons.apache.org/pool/ @@ -10058,7 +9627,7 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -149. Group: commons-validator Name: commons-validator Version: 1.7 +145. Group: commons-validator Name: commons-validator Version: 1.7 Project URL: http://commons.apache.org/proper/commons-validator/ @@ -10281,135 +9850,311 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -150. Group: dev.failsafe Name: failsafe Version: 3.3.2 +146. Group: commons-validator Name: commons-validator Version: 1.8.0 -POM License: Apache License, Version 2.0 - http://apache.org/licenses/LICENSE-2.0 +Project URL: http://commons.apache.org/proper/commons-validator/ --------------------------------------------------------------------------------- +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -151. Group: dnsjava Name: dnsjava Version: 2.1.7 +Embedded license: -POM Project URL: http://www.dnsjava.org + **************************************** -POM License: BSD 2-Clause license - http://opensource.org/licenses/BSD-2-Clause --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -152. Group: io.airlift Name: aircompressor Version: 0.21 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM Project URL: http://github.com/airlift/aircompressor + 1. Definitions. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. --------------------------------------------------------------------------------- + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -153. Group: io.confluent Name: common-config Version: 7.4.0 + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. --------------------------------------------------------------------------------- + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -154. Group: io.confluent Name: common-utils Version: 7.4.0 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). --------------------------------------------------------------------------------- + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -155. Group: io.confluent Name: common-utils Version: 7.5.0 + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. --------------------------------------------------------------------------------- + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -156. Group: io.confluent Name: kafka-avro-serializer Version: 7.4.0 + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and --------------------------------------------------------------------------------- + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -157. Group: io.confluent Name: kafka-json-schema-provider Version: 7.4.0 + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. --------------------------------------------------------------------------------- + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -158. Group: io.confluent Name: kafka-json-schema-provider Version: 7.5.0 + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. --------------------------------------------------------------------------------- + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -159. Group: io.confluent Name: kafka-json-schema-serializer Version: 7.4.0 + END OF TERMS AND CONDITIONS -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + APPENDIX: How to apply the Apache License to your work. -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. --------------------------------------------------------------------------------- + Copyright [yyyy] [name of copyright owner] -160. Group: io.confluent Name: kafka-json-serializer Version: 7.4.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + http://www.apache.org/licenses/LICENSE-2.0 -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. --------------------------------------------------------------------------------- + **************************************** -161. Group: io.confluent Name: kafka-protobuf-provider Version: 7.4.0 +Apache Commons Validator +Copyright 2002-2023 The Apache Software Foundation -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license +-------------------------------------------------------------------------------- + +147. Group: dev.failsafe Name: failsafe Version: 3.3.2 + +POM License: Apache License, Version 2.0 - http://apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- -162. Group: io.confluent Name: kafka-protobuf-provider Version: 7.5.0 +148. Group: dnsjava Name: dnsjava Version: 3.6.1 -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html +Manifest Project URL: https://javadoc.io/doc/dnsjava/dnsjava -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license +Manifest License: BSD-3-Clause;link="https://raw.githubusercontent.com/dnsjava/dnsjava/master/LICENSE" (Not packaged) --------------------------------------------------------------------------------- +POM Project URL: https://github.com/dnsjava/dnsjava -163. Group: io.confluent Name: kafka-protobuf-types Version: 7.4.0 +POM License: BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html +Embedded license: -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license + **************************************** + +Copyright (c) 1998-2019, Brian Wellington +Copyright (c) 2005 VeriSign. All rights reserved. +Copyright (c) 2019-2023, dnsjava authors + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- -164. Group: io.confluent Name: kafka-protobuf-types Version: 7.5.0 +149. Group: info.picocli Name: picocli Version: 4.6.1 -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html +POM Project URL: http://picocli.info -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license +POM License: The Apache Software License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -165. Group: io.confluent Name: kafka-schema-registry Version: 7.4.0 +150. Group: io.airlift Name: aircompressor Version: 0.27 -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html +POM Project URL: https://github.com/airlift/aircompressor -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license +POM License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.html -------------------------------------------------------------------------------- -166. Group: io.confluent Name: kafka-schema-registry Version: 7.5.0 +151. Group: io.confluent Name: common-config Version: 7.6.0 POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html -POM License: Confluent Community License - http://www.confluent.io/confluent-community-license +-------------------------------------------------------------------------------- + +152. Group: io.confluent Name: common-utils Version: 7.6.0 + +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html -------------------------------------------------------------------------------- -167. Group: io.confluent Name: kafka-schema-registry-client Version: 7.4.0 +153. Group: io.confluent Name: kafka-avro-serializer Version: 7.6.0 POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html @@ -10417,7 +10162,7 @@ POM License: Confluent Community License - http://www.confluent.io/confluent-com -------------------------------------------------------------------------------- -168. Group: io.confluent Name: kafka-schema-registry-client Version: 7.5.0 +154. Group: io.confluent Name: kafka-json-schema-provider Version: 7.6.0 POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html @@ -10425,7 +10170,7 @@ POM License: Confluent Community License - http://www.confluent.io/confluent-com -------------------------------------------------------------------------------- -169. Group: io.confluent Name: kafka-schema-serializer Version: 7.4.0 +155. Group: io.confluent Name: kafka-json-schema-serializer Version: 7.6.0 POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html @@ -10433,23 +10178,31 @@ POM License: Confluent Community License - http://www.confluent.io/confluent-com -------------------------------------------------------------------------------- -170. Group: io.confluent Name: logredactor Version: 1.0.11 +156. Group: io.confluent Name: kafka-json-serializer Version: 7.6.0 -POM Project URL: https://github.com/confluentinc/logredactor +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Confluent Community License - http://www.confluent.io/confluent-community-license -------------------------------------------------------------------------------- -171. Group: io.confluent Name: logredactor Version: 1.0.12 +157. Group: io.confluent Name: kafka-schema-registry-client Version: 7.6.0 -POM Project URL: https://github.com/confluentinc/logredactor +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Confluent Community License - http://www.confluent.io/confluent-community-license -------------------------------------------------------------------------------- -172. Group: io.confluent Name: logredactor-metrics Version: 1.0.11 +158. Group: io.confluent Name: kafka-schema-serializer Version: 7.6.0 + +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + +POM License: Confluent Community License - http://www.confluent.io/confluent-community-license + +-------------------------------------------------------------------------------- + +159. Group: io.confluent Name: logredactor Version: 1.0.12 POM Project URL: https://github.com/confluentinc/logredactor @@ -10457,7 +10210,7 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -173. Group: io.confluent Name: logredactor-metrics Version: 1.0.12 +160. Group: io.confluent Name: logredactor-metrics Version: 1.0.12 POM Project URL: https://github.com/confluentinc/logredactor @@ -10465,181 +10218,371 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -174. Group: io.confluent Name: rest-utils Version: 7.4.0 +161. Group: io.dropwizard.metrics Name: metrics-core Version: 3.2.4 POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html -------------------------------------------------------------------------------- -175. Group: io.confluent Name: rest-utils Version: 7.5.0 +162. Group: io.github.classgraph Name: classgraph Version: 4.8.120 -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html +POM Project URL: https://github.com/classgraph/classgraph + +POM License: The MIT License (MIT) - http://opensource.org/licenses/MIT -------------------------------------------------------------------------------- -176. Group: io.debezium Name: debezium-api Version: 2.3.0.Final +163. Group: io.github.classgraph Name: classgraph Version: 4.8.149 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/classgraph/classgraph -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: The MIT License (MIT) - http://opensource.org/licenses/MIT -------------------------------------------------------------------------------- -177. Group: io.debezium Name: debezium-connector-mongodb Version: 2.3.0.Final +164. Group: io.grpc Name: grpc-api Version: 1.64.0 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/grpc/grpc-java -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -178. Group: io.debezium Name: debezium-connector-mysql Version: 2.3.0.Final +165. Group: io.grpc Name: grpc-context Version: 1.64.0 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/grpc/grpc-java -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -179. Group: io.debezium Name: debezium-connector-postgres Version: 2.3.0.Final +166. Group: io.grpc Name: grpc-core Version: 1.64.0 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/grpc/grpc-java -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -180. Group: io.debezium Name: debezium-core Version: 2.3.0.Final +167. Group: io.grpc Name: grpc-inprocess Version: 1.63.0 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/grpc/grpc-java -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -181. Group: io.debezium Name: debezium-ddl-parser Version: 2.3.0.Final +168. Group: io.grpc Name: grpc-protobuf Version: 1.64.0 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/grpc/grpc-java -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -182. Group: io.debezium Name: debezium-storage-file Version: 2.3.0.Final +169. Group: io.grpc Name: grpc-protobuf-lite Version: 1.64.0 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/grpc/grpc-java -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -183. Group: io.debezium Name: debezium-storage-kafka Version: 2.3.0.Final +170. Group: io.grpc Name: grpc-services Version: 1.64.0 -POM License: Apache Software License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/grpc/grpc-java -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -184. Group: io.dropwizard.metrics Name: metrics-core Version: 3.2.4 +171. Group: io.grpc Name: grpc-stub Version: 1.64.0 -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html +POM Project URL: https://github.com/grpc/grpc-java + +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -185. Group: io.dropwizard.metrics Name: metrics-core Version: 4.1.12.1 +172. Group: io.grpc Name: grpc-util Version: 1.64.0 -POM License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.html +POM Project URL: https://github.com/grpc/grpc-java + +POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -186. Group: io.github.classgraph Name: classgraph Version: 4.8.120 +173. Group: io.krakens Name: java-grok Version: 0.1.9 -POM Project URL: https://github.com/classgraph/classgraph +POM Project URL: https://github.com/thekrakken/java-grok -POM License: The MIT License (MIT) - http://opensource.org/licenses/MIT +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -187. Group: io.grpc Name: grpc-api Version: 1.57.2 +174. Group: io.micrometer Name: micrometer-commons Version: 1.10.5 -POM Project URL: https://github.com/grpc/grpc-java +POM Project URL: https://github.com/micrometer-metrics/micrometer -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt --------------------------------------------------------------------------------- +Embedded license: -188. Group: io.grpc Name: grpc-context Version: 1.27.2 + **************************************** -POM Project URL: https://github.com/grpc/grpc-java + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION --------------------------------------------------------------------------------- + 1. Definitions. -189. Group: io.grpc Name: grpc-context Version: 1.57.2 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM Project URL: https://github.com/grpc/grpc-java + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. --------------------------------------------------------------------------------- + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -190. Group: io.grpc Name: grpc-core Version: 1.57.2 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -POM Project URL: https://github.com/grpc/grpc-java + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). --------------------------------------------------------------------------------- + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -191. Group: io.grpc Name: grpc-protobuf Version: 1.57.2 + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -POM Project URL: https://github.com/grpc/grpc-java + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. --------------------------------------------------------------------------------- + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -192. Group: io.grpc Name: grpc-protobuf-lite Version: 1.57.2 + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -POM Project URL: https://github.com/grpc/grpc-java + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and --------------------------------------------------------------------------------- + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -193. Group: io.grpc Name: grpc-services Version: 1.57.2 + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -POM Project URL: https://github.com/grpc/grpc-java + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. --------------------------------------------------------------------------------- + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -194. Group: io.grpc Name: grpc-stub Version: 1.57.2 + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -POM Project URL: https://github.com/grpc/grpc-java + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. --------------------------------------------------------------------------------- + END OF TERMS AND CONDITIONS -195. Group: io.kcache Name: kcache Version: 4.0.11 + APPENDIX: How to apply the Apache License to your work. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. --------------------------------------------------------------------------------- + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -196. Group: io.krakens Name: java-grok Version: 0.1.9 + https://www.apache.org/licenses/LICENSE-2.0 -POM Project URL: https://github.com/thekrakken/java-grok + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + **************************************** + +Micrometer + +Copyright (c) 2017-Present VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------------------- + +This product contains a modified portion of 'io.netty.util.internal.logging', +in the Netty/Common library distributed by The Netty Project: + + * Copyright 2013 The Netty Project + * License: Apache License v2.0 + * Homepage: https://netty.io + +This product contains a modified portion of 'StringUtils.isBlank()', +in the Commons Lang library distributed by The Apache Software Foundation: + + * Copyright 2001-2019 The Apache Software Foundation + * License: Apache License v2.0 + * Homepage: https://commons.apache.org/proper/commons-lang/ + +This product contains a modified portion of 'JsonUtf8Writer', +in the Moshi library distributed by Square, Inc: + + * Copyright 2010 Google Inc. + * License: Apache License v2.0 + * Homepage: https://github.com/square/moshi + +This product contains a modified portion of the 'org.springframework.lang' +package in the Spring Framework library, distributed by VMware, Inc: + + * Copyright 2002-2019 the original author or authors. + * License: Apache License v2.0 + * Homepage: https://spring.io/projects/spring-framework -------------------------------------------------------------------------------- -197. Group: io.micrometer Name: micrometer-commons Version: 1.10.5 +175. Group: io.micrometer Name: micrometer-commons Version: 1.13.0 POM Project URL: https://github.com/micrometer-metrics/micrometer @@ -10901,7 +10844,7 @@ package in the Spring Framework library, distributed by VMware, Inc: -------------------------------------------------------------------------------- -198. Group: io.micrometer Name: micrometer-commons Version: 1.11.3 +176. Group: io.micrometer Name: micrometer-core Version: 1.10.5 POM Project URL: https://github.com/micrometer-metrics/micrometer @@ -11163,7 +11106,7 @@ package in the Spring Framework library, distributed by VMware, Inc: -------------------------------------------------------------------------------- -199. Group: io.micrometer Name: micrometer-core Version: 1.10.5 +177. Group: io.micrometer Name: micrometer-core Version: 1.13.0 POM Project URL: https://github.com/micrometer-metrics/micrometer @@ -11425,7 +11368,7 @@ package in the Spring Framework library, distributed by VMware, Inc: -------------------------------------------------------------------------------- -200. Group: io.micrometer Name: micrometer-core Version: 1.11.3 +178. Group: io.micrometer Name: micrometer-observation Version: 1.10.5 POM Project URL: https://github.com/micrometer-metrics/micrometer @@ -11687,7 +11630,7 @@ package in the Spring Framework library, distributed by VMware, Inc: -------------------------------------------------------------------------------- -201. Group: io.micrometer Name: micrometer-observation Version: 1.10.5 +179. Group: io.micrometer Name: micrometer-observation Version: 1.13.0 POM Project URL: https://github.com/micrometer-metrics/micrometer @@ -11949,7 +11892,7 @@ package in the Spring Framework library, distributed by VMware, Inc: -------------------------------------------------------------------------------- -202. Group: io.micrometer Name: micrometer-observation Version: 1.11.3 +180. Group: io.micrometer Name: micrometer-registry-cloudwatch2 Version: 1.10.5 POM Project URL: https://github.com/micrometer-metrics/micrometer @@ -12211,7 +12154,7 @@ package in the Spring Framework library, distributed by VMware, Inc: -------------------------------------------------------------------------------- -203. Group: io.micrometer Name: micrometer-registry-cloudwatch2 Version: 1.10.5 +181. Group: io.micrometer Name: micrometer-registry-prometheus Version: 1.10.5 POM Project URL: https://github.com/micrometer-metrics/micrometer @@ -12473,269 +12416,7 @@ package in the Spring Framework library, distributed by VMware, Inc: -------------------------------------------------------------------------------- -204. Group: io.micrometer Name: micrometer-registry-prometheus Version: 1.10.5 - -POM Project URL: https://github.com/micrometer-metrics/micrometer - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Micrometer - -Copyright (c) 2017-Present VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -------------------------------------------------------------------------------- - -This product contains a modified portion of 'io.netty.util.internal.logging', -in the Netty/Common library distributed by The Netty Project: - - * Copyright 2013 The Netty Project - * License: Apache License v2.0 - * Homepage: https://netty.io - -This product contains a modified portion of 'StringUtils.isBlank()', -in the Commons Lang library distributed by The Apache Software Foundation: - - * Copyright 2001-2019 The Apache Software Foundation - * License: Apache License v2.0 - * Homepage: https://commons.apache.org/proper/commons-lang/ - -This product contains a modified portion of 'JsonUtf8Writer', -in the Moshi library distributed by Square, Inc: - - * Copyright 2010 Google Inc. - * License: Apache License v2.0 - * Homepage: https://github.com/square/moshi - -This product contains a modified portion of the 'org.springframework.lang' -package in the Spring Framework library, distributed by VMware, Inc: - - * Copyright 2002-2019 the original author or authors. - * License: Apache License v2.0 - * Homepage: https://spring.io/projects/spring-framework - --------------------------------------------------------------------------------- - -205. Group: io.netty Name: netty-all Version: 4.1.100.Final +182. Group: io.netty Name: netty-all Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12745,7 +12426,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -206. Group: io.netty Name: netty-buffer Version: 4.1.100.Final +183. Group: io.netty Name: netty-buffer Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12753,7 +12434,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -207. Group: io.netty Name: netty-codec Version: 4.1.100.Final +184. Group: io.netty Name: netty-codec Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12761,7 +12442,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -208. Group: io.netty Name: netty-codec-dns Version: 4.1.100.Final +185. Group: io.netty Name: netty-codec-dns Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12769,7 +12450,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -209. Group: io.netty Name: netty-codec-haproxy Version: 4.1.100.Final +186. Group: io.netty Name: netty-codec-haproxy Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12777,7 +12458,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -210. Group: io.netty Name: netty-codec-http Version: 4.1.100.Final +187. Group: io.netty Name: netty-codec-http Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12785,7 +12466,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -211. Group: io.netty Name: netty-codec-http2 Version: 4.1.100.Final +188. Group: io.netty Name: netty-codec-http2 Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12793,7 +12474,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -212. Group: io.netty Name: netty-codec-memcache Version: 4.1.100.Final +189. Group: io.netty Name: netty-codec-memcache Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12801,7 +12482,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -213. Group: io.netty Name: netty-codec-mqtt Version: 4.1.100.Final +190. Group: io.netty Name: netty-codec-mqtt Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12809,7 +12490,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -214. Group: io.netty Name: netty-codec-redis Version: 4.1.100.Final +191. Group: io.netty Name: netty-codec-redis Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12817,7 +12498,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -215. Group: io.netty Name: netty-codec-smtp Version: 4.1.100.Final +192. Group: io.netty Name: netty-codec-smtp Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12825,7 +12506,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -216. Group: io.netty Name: netty-codec-socks Version: 4.1.100.Final +193. Group: io.netty Name: netty-codec-socks Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12833,7 +12514,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -217. Group: io.netty Name: netty-codec-stomp Version: 4.1.100.Final +194. Group: io.netty Name: netty-codec-stomp Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12841,7 +12522,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -218. Group: io.netty Name: netty-codec-xml Version: 4.1.100.Final +195. Group: io.netty Name: netty-codec-xml Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12849,7 +12530,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -219. Group: io.netty Name: netty-common Version: 4.1.100.Final +196. Group: io.netty Name: netty-common Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12857,7 +12538,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -220. Group: io.netty Name: netty-handler Version: 4.1.100.Final +197. Group: io.netty Name: netty-handler Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12865,7 +12546,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -221. Group: io.netty Name: netty-handler-proxy Version: 4.1.100.Final +198. Group: io.netty Name: netty-handler-proxy Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12873,7 +12554,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -222. Group: io.netty Name: netty-handler-ssl-ocsp Version: 4.1.100.Final +199. Group: io.netty Name: netty-handler-ssl-ocsp Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12881,7 +12562,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -223. Group: io.netty Name: netty-resolver Version: 4.1.100.Final +200. Group: io.netty Name: netty-resolver Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12889,7 +12570,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -224. Group: io.netty Name: netty-resolver-dns Version: 4.1.100.Final +201. Group: io.netty Name: netty-resolver-dns Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12897,7 +12578,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -225. Group: io.netty Name: netty-resolver-dns-classes-macos Version: 4.1.100.Final +202. Group: io.netty Name: netty-resolver-dns-classes-macos Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12905,7 +12586,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -226. Group: io.netty Name: netty-resolver-dns-native-macos Version: 4.1.100.Final +203. Group: io.netty Name: netty-resolver-dns-native-macos Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -12913,7 +12594,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -227. Group: io.netty Name: netty-tcnative-boringssl-static Version: 2.0.61.Final +204. Group: io.netty Name: netty-tcnative-boringssl-static Version: 2.0.65.Final Manifest Project URL: https://netty.io/ @@ -13183,7 +12864,7 @@ This product contains code from boringssl. -------------------------------------------------------------------------------- -228. Group: io.netty Name: netty-tcnative-classes Version: 2.0.61.Final +205. Group: io.netty Name: netty-tcnative-classes Version: 2.0.65.Final Manifest Project URL: https://netty.io/ @@ -13191,7 +12872,7 @@ POM License: The Apache Software License, Version 2.0 - http://www.apache.org/li -------------------------------------------------------------------------------- -229. Group: io.netty Name: netty-transport Version: 4.1.100.Final +206. Group: io.netty Name: netty-transport Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13199,7 +12880,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -230. Group: io.netty Name: netty-transport-classes-epoll Version: 4.1.100.Final +207. Group: io.netty Name: netty-transport-classes-epoll Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13207,7 +12888,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -231. Group: io.netty Name: netty-transport-classes-kqueue Version: 4.1.100.Final +208. Group: io.netty Name: netty-transport-classes-kqueue Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13215,7 +12896,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -232. Group: io.netty Name: netty-transport-native-epoll Version: 4.1.100.Final +209. Group: io.netty Name: netty-transport-native-epoll Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13223,7 +12904,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -233. Group: io.netty Name: netty-transport-native-kqueue Version: 4.1.100.Final +210. Group: io.netty Name: netty-transport-native-kqueue Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13231,7 +12912,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -234. Group: io.netty Name: netty-transport-native-unix-common Version: 4.1.100.Final +211. Group: io.netty Name: netty-transport-native-unix-common Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13239,7 +12920,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -235. Group: io.netty Name: netty-transport-rxtx Version: 4.1.100.Final +212. Group: io.netty Name: netty-transport-rxtx Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13247,7 +12928,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -236. Group: io.netty Name: netty-transport-sctp Version: 4.1.100.Final +213. Group: io.netty Name: netty-transport-sctp Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13255,7 +12936,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -237. Group: io.netty Name: netty-transport-udt Version: 4.1.100.Final +214. Group: io.netty Name: netty-transport-udt Version: 4.1.108.Final Manifest Project URL: https://netty.io/ @@ -13263,23 +12944,7 @@ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICEN -------------------------------------------------------------------------------- -238. Group: io.opencensus Name: opencensus-api Version: 0.31.1 - -POM Project URL: https://github.com/census-instrumentation/opencensus-java - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -239. Group: io.opencensus Name: opencensus-contrib-http-util Version: 0.31.1 - -POM Project URL: https://github.com/census-instrumentation/opencensus-java - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -240. Group: io.opentelemetry.proto Name: opentelemetry-proto Version: 0.16.0-alpha +215. Group: io.opentelemetry.proto Name: opentelemetry-proto Version: 0.16.0-alpha POM Project URL: https://github.com/open-telemetry/opentelemetry-proto-java @@ -13287,7 +12952,7 @@ POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LI -------------------------------------------------------------------------------- -241. Group: io.outfoxx Name: swiftpoet Version: 1.0.0 +216. Group: io.outfoxx Name: swiftpoet Version: 1.3.1 POM Project URL: https://github.com/outfoxx/swiftpoet @@ -13295,7 +12960,7 @@ POM License: Apache License 2.0 - https://raw.githubusercontent.com/outfoxx/swif -------------------------------------------------------------------------------- -242. Group: io.perfmark Name: perfmark-api Version: 0.26.0 +217. Group: io.perfmark Name: perfmark-api Version: 0.26.0 POM Project URL: https://github.com/perfmark/perfmark @@ -13303,61 +12968,75 @@ POM License: Apache 2.0 - https://opensource.org/licenses/Apache-2.0 -------------------------------------------------------------------------------- -243. Group: io.prometheus Name: simpleclient Version: 0.16.0 +218. Group: io.prometheus Name: simpleclient Version: 0.16.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -244. Group: io.prometheus Name: simpleclient_common Version: 0.16.0 +219. Group: io.prometheus Name: simpleclient_common Version: 0.16.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -245. Group: io.prometheus Name: simpleclient_tracer_common Version: 0.16.0 +220. Group: io.prometheus Name: simpleclient_tracer_common Version: 0.16.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -246. Group: io.prometheus Name: simpleclient_tracer_otel Version: 0.16.0 +221. Group: io.prometheus Name: simpleclient_tracer_otel Version: 0.16.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -247. Group: io.prometheus Name: simpleclient_tracer_otel_agent Version: 0.16.0 +222. Group: io.prometheus Name: simpleclient_tracer_otel_agent Version: 0.16.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -248. Group: io.protostuff Name: protostuff-api Version: 1.8.0 +223. Group: io.protostuff Name: protostuff-api Version: 1.8.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -249. Group: io.protostuff Name: protostuff-collectionschema Version: 1.8.0 +224. Group: io.protostuff Name: protostuff-collectionschema Version: 1.8.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -250. Group: io.protostuff Name: protostuff-core Version: 1.8.0 +225. Group: io.protostuff Name: protostuff-core Version: 1.8.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -251. Group: io.protostuff Name: protostuff-runtime Version: 1.8.0 +226. Group: io.protostuff Name: protostuff-runtime Version: 1.8.0 POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -252. Group: io.swagger.core.v3 Name: swagger-annotations Version: 2.1.10 +227. Group: io.reactivex.rxjava3 Name: rxjava Version: 3.1.6 + +Project URL: https://github.com/ReactiveX/RxJava + +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +228. Group: io.swagger Name: swagger-annotations Version: 1.6.7 + +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + +-------------------------------------------------------------------------------- + +229. Group: io.swagger.core.v3 Name: swagger-annotations Version: 2.1.10 Manifest Project URL: https://github.com/swagger-api/swagger-core/modules/swagger-annotations @@ -13367,7 +13046,7 @@ POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.htm -------------------------------------------------------------------------------- -253. Group: io.swagger.core.v3 Name: swagger-annotations Version: 2.2.8 +230. Group: io.swagger.core.v3 Name: swagger-annotations Version: 2.2.5 Manifest Project URL: https://github.com/swagger-api/swagger-core/modules/swagger-annotations @@ -13591,27 +13270,7 @@ Copy of the Apache 2.0 license can be found in `LICENSE` file. -------------------------------------------------------------------------------- -254. Group: io.swagger.core.v3 Name: swagger-core Version: 2.1.10 - -Manifest Project URL: https://github.com/swagger-api/swagger-core/modules/swagger-core - -Manifest License: "Apache License 2.0";link="http://www.apache.org/licenses/LICENSE-2.0.html" (Not packaged) - -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html - --------------------------------------------------------------------------------- - -255. Group: io.swagger.core.v3 Name: swagger-models Version: 2.1.10 - -Manifest Project URL: https://github.com/swagger-api/swagger-core/modules/swagger-models - -Manifest License: "Apache License 2.0";link="http://www.apache.org/licenses/LICENSE-2.0.html" (Not packaged) - -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html - --------------------------------------------------------------------------------- - -256. Group: jakarta.activation Name: jakarta.activation-api Version: 1.2.1 +231. Group: jakarta.activation Name: jakarta.activation-api Version: 1.2.1 Manifest Project URL: https://www.eclipse.org @@ -13693,7 +13352,7 @@ JUnit (4.12) -------------------------------------------------------------------------------- -257. Group: jakarta.activation Name: jakarta.activation-api Version: 1.2.2 +232. Group: jakarta.activation Name: jakarta.activation-api Version: 1.2.2 Manifest Project URL: https://www.eclipse.org @@ -13775,19 +13434,17 @@ JUnit (4.12) -------------------------------------------------------------------------------- -258. Group: jakarta.annotation Name: jakarta.annotation-api Version: 1.3.5 +233. Group: jakarta.json Name: jakarta.json-api Version: 2.1.2 Manifest Project URL: https://www.eclipse.org -POM Project URL: https://projects.eclipse.org/projects/ee4j.ca +POM Project URL: https://github.com/eclipse-ee4j/jsonp -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 +POM License: Eclipse Public License 2.0 - https://projects.eclipse.org/license/epl-2.0 POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html - -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html +POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://projects.eclipse.org/license/secondary-gpl-2.0-cp Embedded license: @@ -14433,15 +14090,35 @@ Embedded license: **************************************** -# Notices for Jakarta Annotations +[//]: # " Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved. " +[//]: # " " +[//]: # " This program and the accompanying materials are made available under the " +[//]: # " terms of the Eclipse Public License v. 2.0, which is available at " +[//]: # " http://www.eclipse.org/legal/epl-2.0. " +[//]: # " " +[//]: # " This Source Code may also be made available under the following Secondary " +[//]: # " Licenses when the conditions for such availability set forth in the " +[//]: # " Eclipse Public License v. 2.0 are satisfied: GNU General Public License, " +[//]: # " version 2 with the GNU Classpath Exception, which is available at " +[//]: # " https://www.gnu.org/software/classpath/license.html. " +[//]: # " " +[//]: # " SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 " + +# Notices for Jakarta JSON Processing -This content is produced and maintained by the Jakarta Annotations project. +This content is produced and maintained by the Jakarta JSON Processing project. - * Project home: https://projects.eclipse.org/projects/ee4j.ca +* Project home: https://projects.eclipse.org/projects/ee4j.jsonp ## Trademarks -Jakarta Annotations is a trademark of the Eclipse Foundation. + Jakarta JSON Processing is a trademark of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. ## Declared Project Licenses @@ -14450,8 +14127,8 @@ of the Eclipse Public License v. 2.0 which is available at http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. +General Public License v2.0 w/Classpath exception which is available at +https://www.gnu.org/software/classpath/license.html. SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 @@ -14459,10 +14136,38 @@ SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 The project maintains the following source code repositories: - * https://github.com/eclipse-ee4j/common-annotations-api +* https://github.com/eclipse-ee4j/jsonp ## Third-party Content +This project leverages the following third party content. + +javax.ws.rs-api:2.0.1 (2.0.1) + +* License: (CDDL-1.1 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND + Apache-2.0 +* Project: https://github.com/jax-rs/api +* Source: https://github.com/jax-rs/api + +javax.ws.rs:jsr311-api:jar:1.1.1 (1.1.1) + +* License: CDDL-1.0 AND Apache-2.0 +* Project: https://github.com/jax-rs/api +* Source: + http://search.maven.org/remotecontent?filepath=javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1-sources.jar + +javax:javaee-web-api:jar:7.0 (7.0) + +* License: (CDDL-1.0 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND + (EPL-1.0 OR BSD-3-Clause) AND Apache-2.0 AND LicenseRef-Public Domain +* Project: https://javaee.github.io +* Source: + http://search.maven.org/remotecontent?filepath=javax/javaee-web-api/7.0/javaee-web-api-7.0-sources.jar + +JUnit (4.12) + +* License: Eclipse Public License + ## Cryptography Content may contain encryption software. The country in which you are currently @@ -14471,14 +14176,13 @@ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. - -------------------------------------------------------------------------------- -259. Group: jakarta.json Name: jakarta.json-api Version: 2.1.2 +234. Group: jakarta.json.bind Name: jakarta.json.bind-api Version: 2.0.0 Manifest Project URL: https://www.eclipse.org -POM Project URL: https://github.com/eclipse-ee4j/jsonp +POM Project URL: https://eclipse-ee4j.github.io/jsonb-api POM License: Eclipse Public License 2.0 - https://projects.eclipse.org/license/epl-2.0 @@ -15130,29 +14834,15 @@ Embedded license: **************************************** -[//]: # " Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved. " -[//]: # " " -[//]: # " This program and the accompanying materials are made available under the " -[//]: # " terms of the Eclipse Public License v. 2.0, which is available at " -[//]: # " http://www.eclipse.org/legal/epl-2.0. " -[//]: # " " -[//]: # " This Source Code may also be made available under the following Secondary " -[//]: # " Licenses when the conditions for such availability set forth in the " -[//]: # " Eclipse Public License v. 2.0 are satisfied: GNU General Public License, " -[//]: # " version 2 with the GNU Classpath Exception, which is available at " -[//]: # " https://www.gnu.org/software/classpath/license.html. " -[//]: # " " -[//]: # " SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 " - -# Notices for Jakarta JSON Processing +# Notices for Jakarta JSON Binding -This content is produced and maintained by the Jakarta JSON Processing project. +This content is produced and maintained by the Jakarta JSON Binding project. -* Project home: https://projects.eclipse.org/projects/ee4j.jsonp +* Project home: https://projects.eclipse.org/projects/ee4j.jsonb ## Trademarks - Jakarta JSON Processing is a trademark of the Eclipse Foundation. +Jakarta JSON Binding is a trademark of the Eclipse Foundation. ## Copyright @@ -15167,8 +14857,8 @@ of the Eclipse Public License v. 2.0 which is available at http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License v2.0 w/Classpath exception which is available at -https://www.gnu.org/software/classpath/license.html. +General Public License, version 2 with the GNU Classpath Exception which is +available at https://www.gnu.org/software/classpath/license.html. SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 @@ -15176,37 +14866,13 @@ SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 The project maintains the following source code repositories: -* https://github.com/eclipse-ee4j/jsonp +* https://github.com/eclipse-ee4j/jsonb-api ## Third-party Content This project leverages the following third party content. -javax.ws.rs-api:2.0.1 (2.0.1) - -* License: (CDDL-1.1 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND - Apache-2.0 -* Project: https://github.com/jax-rs/api -* Source: https://github.com/jax-rs/api - -javax.ws.rs:jsr311-api:jar:1.1.1 (1.1.1) - -* License: CDDL-1.0 AND Apache-2.0 -* Project: https://github.com/jax-rs/api -* Source: - http://search.maven.org/remotecontent?filepath=javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1-sources.jar - -javax:javaee-web-api:jar:7.0 (7.0) - -* License: (CDDL-1.0 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND - (EPL-1.0 OR BSD-3-Clause) AND Apache-2.0 AND LicenseRef-Public Domain -* Project: https://javaee.github.io -* Source: - http://search.maven.org/remotecontent?filepath=javax/javaee-web-api/7.0/javaee-web-api-7.0-sources.jar - -JUnit (4.12) - -* License: Eclipse Public License +None ## Cryptography @@ -15216,1710 +14882,1346 @@ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. + -------------------------------------------------------------------------------- -260. Group: jakarta.json.bind Name: jakarta.json.bind-api Version: 2.0.0 +235. Group: jakarta.validation Name: jakarta.validation-api Version: 3.0.2 Manifest Project URL: https://www.eclipse.org -POM Project URL: https://eclipse-ee4j.github.io/jsonb-api +POM Project URL: https://beanvalidation.org -POM License: Eclipse Public License 2.0 - https://projects.eclipse.org/license/epl-2.0 +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://projects.eclipse.org/license/secondary-gpl-2.0-cp - -Embedded license: - - **************************************** - -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. +POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. +-------------------------------------------------------------------------------- - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. +236. Group: jakarta.xml.bind Name: jakarta.xml.bind-api Version: 2.3.3 - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. +Manifest Project URL: https://www.eclipse.org - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. +POM License: Eclipse Distribution License - v 1.0 - http://www.eclipse.org/org/documents/edl-v10.php - 2. GRANT OF RIGHTS +POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. +POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. +Embedded license: - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + **************************************** - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - 3. REQUIREMENTS + **************************************** - 3.1 If a Contributor Distributes the Program in any form, then: +[//]: # " Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. " +[//]: # " " +[//]: # " This program and the accompanying materials are made available under the " +[//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at " +[//]: # " http://www.eclipse.org/org/documents/edl-v10.php. " +[//]: # " " +[//]: # " SPDX-License-Identifier: BSD-3-Clause " - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and +# Notices for Jakarta XML Binding - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; +This content is produced and maintained by the Jakarta XML Binding +project. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; +* Project home: https://projects.eclipse.org/projects/ee4j.jaxb - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and +## Trademarks - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. +Jakarta XML Binding is a trademark of the Eclipse Foundation. - 3.2 When the Program is Distributed as Source Code: +## Copyright - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. - b) a copy of this Agreement must be included with each copy of - the Program. +## Declared Project Licenses - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. +This program and the accompanying materials are made available under the terms +of the Eclipse Distribution License v. 1.0 which is available at +http://www.eclipse.org/org/documents/edl-v10.php. - 4. COMMERCIAL DISTRIBUTION +SPDX-License-Identifier: BSD-3-Clause - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. +## Source Code - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. +The project maintains the following source code repositories: - 5. NO WARRANTY +* https://github.com/eclipse-ee4j/jaxb-api +* https://github.com/eclipse-ee4j/jaxb-tck - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. +## Third-party Content - 6. DISCLAIMER OF LIABILITY +This project leverages the following third party content. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. +Apache River (3.0.0) - 7. GENERAL +* License: Apache-2.0 AND BSD-3-Clause - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. +ASM 7 (n/a) - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. +* License: BSD-3-Clause +* Project: https://asm.ow2.io/ +* Source: + https://repository.ow2.org/nexus/#nexus-search;gav~org.ow2.asm~asm-commons~~~~kw,versionexpand - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. +JTHarness (5.0) - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. +* License: (GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) +* Project: https://wiki.openjdk.java.net/display/CodeTools/JT+Harness +* Source: http://hg.openjdk.java.net/code-tools/jtharness/ - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. +normalize.css (3.0.2) - Exhibit A - Form of Secondary Licenses Notice +* License: MIT - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." +SigTest (n/a) - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. +* License: GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. +## Cryptography - You may add additional accurate notices of copyright ownership. +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. ---- +-------------------------------------------------------------------------------- -## The GNU General Public License (GPL) Version 2, June 1991 +237. Group: javax.activation Name: activation Version: 1.1 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA +POM Project URL: http://java.sun.com/products/javabeans/jaf/index.jsp - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +POM License: Common Development and Distribution License (CDDL) v1.0 - https://glassfish.dev.java.net/public/CDDLv1.0.html - Preamble +Embedded license: - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. + **************************************** - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + +1. Definitions. + +1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications. + +1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. + +1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. + +1.4. Executable means the Covered Software in any form other than Source Code. + +1.5. Initial Developer means the individual or entity that first makes Original Software available under this License. + +1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. + +1.7. License means this document. + +1.8. 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 the Source Code and Executable form of any of the following: + +A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; + +B. Any new file that contains any part of the Original Software or previous Modification; or + +C. Any new file that is contributed or otherwise made available under the terms of this License. + +1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License. + +1.11. 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.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. + +1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. License Grants. + +2.1. The Initial Developer Grant. +Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: +(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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and +(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). +(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party 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 Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices. + +2.2. Contributor Grant. +Conditioned upon Your compliance with Section 3.1 below and 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 Software 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 distributes or otherwise makes the Modifications available to a third party. +(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)�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 (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. + +3. Distribution Obligations. + +3.1. Availability of Source Code. + +Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. + +3.2. Modifications. + +The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. + +3.3. Required Notices. +You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. + +3.4. Application of Additional Terms. +You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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.5. Distribution of Executable Versions. +You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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.6. Larger Works. +You may create a Larger Work by combining Covered Software 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 Software. + +4. Versions of the License. + +4.1. New Versions. +Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. + +4.2. Effect of New Versions. + +You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. +4.3. Modified Versions. + +When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License. + +5. DISCLAIMER OF WARRANTY. + +COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + +6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. + +6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. + +6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. + +7. 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 SOFTWARE, 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 LOST PROFITS, 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 PARTYS 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. + +8. U.S. GOVERNMENT END USERS. + +The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. + +9. 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. + +10. 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. + +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) +The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. + + + - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. +-------------------------------------------------------------------------------- - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. +238. Group: javax.activation Name: javax.activation-api Version: 1.2.0 - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. +Manifest Project URL: http://www.oracle.com - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. +POM License: CDDL/GPLv2+CE - https://github.com/javaee/activation/blob/master/LICENSE.txt - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. +Embedded license: - The precise terms and conditions for copying, distribution and - modification follow. + **************************************** - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1 - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". +1. Definitions. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + 1.1. "Contributor" means each individual or entity that creates or + contributes to the creation of Modifications. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + 1.2. "Contributor Version" means the combination of the Original + Software, prior Modifications used by a Contributor (if any), and + the Modifications made by that particular Contributor. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + 1.3. "Covered Software" means (a) the Original Software, or (b) + Modifications, or (c) the combination of files containing Original + Software with files containing Modifications, in each case including + portions thereof. - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + 1.4. "Executable" means the Covered Software in any form other than + Source Code. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + 1.5. "Initial Developer" means the individual or entity that first + makes Original Software available under this License. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + 1.6. "Larger Work" means a work which combines Covered Software or + portions thereof with code not governed by the terms of this License. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + 1.7. "License" means this document. - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + 1.8. "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. - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + 1.9. "Modifications" means the Source Code and Executable form of + any of the following: - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + A. Any file that results from an addition to, deletion from or + modification of the contents of a file containing Original Software + or previous Modifications; - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + B. Any new file that contains any part of the Original Software or + previous Modification; or - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + C. Any new file that is contributed or otherwise made available + under the terms of this License. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + 1.10. "Original Software" means the Source Code and Executable form + of computer software code that is originally released under this + License. - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) + 1.11. "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. - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. + 1.12. "Source Code" means (a) the common form of computer software + code in which modifications are made and (b) associated + documentation included in or with such code. - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. + 1.13. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, + this License. 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. - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. +2. License Grants. - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + 2.1. The Initial Developer Grant. - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + Conditioned upon Your compliance with Section 3.1 below and subject + to third party intellectual property claims, the Initial Developer + hereby grants You a world-wide, royalty-free, non-exclusive license: - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + (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 + Software (or portions thereof), with or without Modifications, + and/or as part of a Larger Work; and - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + (b) under Patent Claims infringed by the making, using or selling of + Original Software, to make, have made, use, practice, sell, and + offer for sale, and/or otherwise dispose of the Original Software + (or portions thereof). - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + (c) The licenses granted in Sections 2.1(a) and (b) are effective on + the date Initial Developer first distributes or otherwise makes the + Original Software available to a third party under the terms of this + License. - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: (1) for code that You delete from the Original Software, or + (2) for infringements caused by: (i) the modification of the + Original Software, or (ii) the combination of the Original Software + with other software or devices. - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + 2.2. Contributor Grant. - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + Conditioned upon Your compliance with Section 3.1 below and subject + to third party intellectual property claims, each Contributor hereby + grants You a world-wide, royalty-free, non-exclusive license: - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + (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 Software + and/or as part of a Larger Work; and - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. + (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). - NO WARRANTY + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective + on the date Contributor first distributes or otherwise makes the + Modifications available to a third party. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. + (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) 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 (3) + under Patent Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +3. Distribution Obligations. - END OF TERMS AND CONDITIONS + 3.1. Availability of Source Code. - How to Apply These Terms to Your New Programs + Any Covered Software that You distribute or otherwise make available + in Executable form must also be made available in Source Code form + and that Source Code form must be distributed only under the terms + of this License. You must include a copy of this License with every + copy of the Source Code form of the Covered Software You distribute + or otherwise make available. You must inform recipients of any such + Covered Software in Executable form as to how they can obtain such + Covered Software in Source Code form in a reasonable manner on or + through a medium customarily used for software exchange. - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + 3.2. Modifications. - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + The Modifications that You create or to which You contribute are + governed by the terms of this License. You represent that You + believe Your Modifications are Your original creation(s) and/or You + have sufficient rights to grant the rights conveyed by this License. - One line to give the program's name and a brief idea of what it does. - Copyright (C) + 3.3. Required Notices. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + You must include a notice in each of Your Modifications that + identifies You as the Contributor of the Modification. You may not + remove or alter any copyright, patent or trademark notices contained + within the Covered Software, or any notices of licensing or any + descriptive text giving attribution to any Contributor or the + Initial Developer. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + 3.4. Application of Additional Terms. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + You may not offer or impose any terms on any Covered Software in + Source Code form that alters or restricts the applicable version of + this License or the recipients' rights hereunder. You may choose to + offer, and to charge a fee for, warranty, support, indemnity or + liability obligations to one or more recipients of Covered Software. + 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 that 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. - Also add information on how to contact you by electronic and paper mail. + 3.5. Distribution of Executable Versions. - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + You may distribute the Executable form of the Covered Software under + the terms of this License or under the terms of 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 form does not attempt to + limit or alter the recipient's rights in the Source Code form from + the rights set forth in this License. If You distribute the Covered + Software in Executable form 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 + 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. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + 3.6. Larger Works. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + You may create a Larger Work by combining Covered Software 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 + Software. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. +4. Versions of the License. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + 4.1. New Versions. - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + Oracle is the initial license steward and may publish revised and/or + new versions of this License from time to time. Each version will be + given a distinguishing version number. Except as provided in Section + 4.3, no one other than the license steward has the right to modify + this License. ---- + 4.2. Effect of New Versions. -## CLASSPATH EXCEPTION + You may always continue to use, distribute or otherwise make the + Covered Software available under the terms of the version of the + License under which You originally received the Covered Software. If + the Initial Developer includes a notice in the Original Software + prohibiting it from being distributed or otherwise made available + under any subsequent version of the License, You must distribute and + make the Covered Software available under the terms of the version + of the License under which You originally received the Covered + Software. Otherwise, You may also choose to use, distribute or + otherwise make the Covered Software available under the terms of any + subsequent version of the License published by the license steward. - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + 4.3. Modified Versions. - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + When You are an Initial Developer and You want to create a new + license for Your Original Software, You may create and use a + modified version of this License if You: (a) rename the license and + remove any references to the name of the license steward (except to + note that the license differs from this License); and (b) otherwise + make it clear that the license contains terms which differ from this + License. - **************************************** +5. DISCLAIMER OF WARRANTY. -# Notices for Jakarta JSON Binding + COVERED SOFTWARE 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 SOFTWARE + 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS + AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. -This content is produced and maintained by the Jakarta JSON Binding project. +6. TERMINATION. -* Project home: https://projects.eclipse.org/projects/ee4j.jsonb + 6.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. + Provisions which, by their nature, must remain in effect beyond the + termination of this License shall survive. -## Trademarks + 6.2. If You assert a patent infringement claim (excluding + declaratory judgment actions) against Initial Developer or a + Contributor (the Initial Developer or Contributor against whom You + assert such claim is referred to as "Participant") alleging that the + Participant Software (meaning the Contributor Version where the + Participant is a Contributor or the Original Software where the + Participant is the Initial Developer) directly or indirectly + infringes any patent, then any and all rights granted directly or + indirectly to You by such Participant, the Initial Developer (if the + Initial Developer is not the Participant) and all Contributors under + Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice + from Participant terminate prospectively and automatically at the + expiration of such 60 day notice period, unless if within such 60 + day period You withdraw Your claim with respect to the Participant + Software against such Participant either unilaterally or pursuant to + a written agreement with Participant. -Jakarta JSON Binding is a trademark of the Eclipse Foundation. + 6.3. If You assert a patent infringement claim against Participant + alleging that the Participant Software 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. -## Copyright + 6.4. In the event of termination under Sections 6.1 or 6.2 above, + all end user licenses that have been validly granted by You or any + distributor hereunder prior to termination (excluding licenses + granted to You by any distributor) shall survive termination. -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. +7. LIMITATION OF LIABILITY. -## Declared Project Licenses + 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 SOFTWARE, 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. -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. +8. U.S. GOVERNMENT END USERS. -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + The Covered Software is a "commercial item," as that term is defined + in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" (as that term is defined at 48 C.F.R. � + 252.227-7014(a)(1)) 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 Software + with only those rights set forth herein. This U.S. Government Rights + clause is in lieu of, and supersedes, any other FAR, DFAR, or other + clause or provision that addresses Government rights in computer + software under this License. -## Source Code +9. MISCELLANEOUS. -The project maintains the following source code repositories: + 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 + the law of the jurisdiction specified in a notice contained within + the Original Software (except to the extent applicable law, if any, + provides otherwise), excluding such jurisdiction's conflict-of-law + provisions. Any litigation relating to this License shall be subject + to the jurisdiction of the courts located in the jurisdiction and + venue specified in a notice contained within the Original Software, + 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. You + agree that You alone are responsible for compliance with the United + States export administration regulations (and the export control + laws and regulation of any other countries) when You use, distribute + or otherwise make available any Covered Software. -* https://github.com/eclipse-ee4j/jsonb-api +10. RESPONSIBILITY FOR CLAIMS. -## Third-party Content + 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. -This project leverages the following third party content. +------------------------------------------------------------------------ -None +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION +LICENSE (CDDL) -## Cryptography +The code released under the CDDL shall be governed by the laws of the +State of California (excluding conflict-of-law provisions). Any +litigation relating to this License shall be subject to the jurisdiction +of the Federal Courts of the Northern District of California and the +state courts of the State of California, with venue lying in Santa Clara +County, California. -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. --------------------------------------------------------------------------------- -261. Group: jakarta.validation Name: jakarta.validation-api Version: 3.0.2 + The GNU General Public License (GPL) Version 2, June 1991 -Manifest Project URL: https://www.eclipse.org +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor +Boston, MA 02110-1335 +USA -POM Project URL: https://beanvalidation.org +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +Preamble -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public +License applies to most of the Free Software Foundation's software and +to any other program whose authors commit to using it. (Some other Free +Software Foundation software is covered by the GNU Library General +Public License instead.) You can apply it to your programs, too. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html +When we speak of free software, we are referring to freedom, not price. +Our General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this +service if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs; and that you know you can do these things. --------------------------------------------------------------------------------- +To protect your rights, we need to make restrictions that forbid anyone +to deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. -262. Group: jakarta.ws.rs Name: jakarta.ws.rs-api Version: 2.1.6 +For example, if you distribute copies of such a program, whether gratis +or for a fee, you must give the recipients all the rights that you have. +You must make sure that they, too, receive or can get the source code. +And you must show them these terms so they know their rights. -Manifest Project URL: https://www.eclipse.org/org/foundation/ +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. -POM Project URL: https://github.com/eclipse-ee4j/jaxrs-api +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 +Finally, any free program is threatened constantly by software patents. +We wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program +proprietary. To prevent this, we have made it clear that any patent must +be licensed for everyone's free use or not licensed at all. -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html +The precise terms and conditions for copying, distribution and +modification follow. -Embedded license: +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - **************************************** +0. This License applies to any program or other work which contains a +notice placed by the copyright holder saying it may be distributed under +the terms of this General Public License. The "Program", below, refers +to any such program or work, and a "work based on the Program" means +either the Program or any derivative work under copyright law: that is +to say, a work containing the Program or a portion of it, either +verbatim or with modifications and/or translated into another language. +(Hereinafter, translation is included without limitation in the term +"modification".) Each licensee is addressed as "you". -# Eclipse Public License - v 2.0 +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of running +the Program is not restricted, and the output from the Program is +covered only if its contents constitute a work based on the Program +(independent of having been made by running the Program). Whether that +is true depends on what the Program does. - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice +and disclaimer of warranty; keep intact all the notices that refer to +this License and to the absence of any warranty; and give any other +recipients of the Program a copy of this License along with the Program. - 1. DEFINITIONS +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. - "Contribution" means: +2. You may modify your copy or copies of the Program or any portion of +it, thus forming a work based on the Program, and copy and distribute +such modifications or work under the terms of Section 1 above, provided +that you also meet all of these conditions: - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License. - "Contributor" means any person or entity that Distributes the Program. + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this License. + (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program + is not required to print an announcement.) - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, and +can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based on +the Program, the distribution of the whole must be on the terms of this +License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. - "Program" means the Contributions Distributed in accordance with this - Agreement. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the +scope of this License. - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost + of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed + only for noncommercial distribution and only if you received the + program in object code or executable form with such an offer, in + accord with Subsection b above.) - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source code +means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to control +compilation and installation of the executable. However, as a special +exception, the source code distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies the +executable. - 2. GRANT OF RIGHTS +If distribution of executable or object code is made by offering access +to copy from a designated place, then offering equivalent access to copy +the source code from the same place counts as distribution of the source +code, even though third parties are not compelled to copy the source +along with the object code. - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense or distribute the Program is void, and will +automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will +not have their licenses terminated so long as such parties remain in +full compliance. - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and all +its terms and conditions for copying, distributing or modifying the +Program or works based on it. - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further restrictions +on the recipients' exercise of the rights granted herein. You are not +responsible for enforcing compliance by third parties to this License. - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot distribute +so as to satisfy simultaneously your obligations under this License and +any other pertinent obligations, then as a consequence you may not +distribute the Program at all. For example, if a patent license would +not permit royalty-free redistribution of the Program by all those who +receive copies directly or indirectly through you, then the only way you +could satisfy both it and this License would be to refrain entirely from +distribution of the Program. - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. - 3. REQUIREMENTS +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is implemented +by public license practices. Many people have made generous +contributions to the wide range of software distributed through that +system in reliance on consistent application of that system; it is up to +the author/donor to decide if he or she is willing to distribute +software through any other system and a licensee cannot impose that choice. - 3.1 If a Contributor Distributes the Program in any form, then: +This section is intended to make thoroughly clear what is believed to be +a consequence of the rest of this License. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License may +add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among countries +not thus excluded. In such case, this License incorporates the +limitation as if written in the body of this License. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; +9. The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a version +number of this License, you may choose any version ever published by the +Free Software Foundation. - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free +software and of promoting the sharing and reuse of software generally. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. +NO WARRANTY - 3.2 When the Program is Distributed as Source Code: +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE +ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH +YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR OR CORRECTION. - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR +DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM +(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF +THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR +OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - b) a copy of this Agreement must be included with each copy of - the Program. +END OF TERMS AND CONDITIONS - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. +How to Apply These Terms to Your New Programs - 4. COMMERCIAL DISTRIBUTION +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + One line to give the program's name and a brief idea of what it does. + Copyright (C) - 5. NO WARRANTY + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. - 6. DISCLAIMER OF LIABILITY + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. +Also add information on how to contact you by electronic and paper mail. - 7. GENERAL +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type + `show w'. This is free software, and you are welcome to redistribute + it under certain conditions; type `show c' for details. - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the commands +you use may be called something other than `show w' and `show c'; they +could even be mouse-clicks or menu items--whatever suits your program. - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (which makes passes at compilers) written by + James Hacker. - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice - Exhibit A - Form of Secondary Licenses Notice +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications +with the library. If this is what you want to do, use the GNU Library +General Public License instead of this License. - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." +# - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. +Certain source files distributed by Oracle America, Inc. and/or its +affiliates are subject to the following clarification and special +exception to the GPLv2, based on the GNU Project exception for its +Classpath libraries, known as the GNU Classpath Exception, but only +where Oracle has expressly included in the particular source file's +header the words "Oracle designates this particular file as subject to +the "Classpath" exception as provided by Oracle in the LICENSE file +that accompanied this code." - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. +You should also note that Oracle includes multiple, independent +programs in this software package. Some of those programs are provided +under licenses deemed incompatible with the GPLv2 by the Free Software +Foundation and others. For example, the package includes programs +licensed under the Apache License, Version 2.0. Such programs are +licensed to you under their original licenses. - You may add additional accurate notices of copyright ownership. +Oracle facilitates your further distribution of this package by adding +the Classpath Exception to the necessary parts of its GPLv2 code, which +permits you to use that code in combination with other independent +modules not licensed under the GPLv2. However, note that this would +not permit you to commingle code under an incompatible license with +Oracle's GPLv2 licensed code by, for example, cutting and pasting such +code into a file also containing Oracle's GPLv2 licensed code and then +distributing the result. Additionally, if you were to remove the +Classpath Exception from any of the files to which it applies and +distribute the result, you would likely be required to license some or +all of the other code in that distribution under the GPLv2 as well, and +since the GPLv2 is incompatible with the license terms of some items +included in the distribution by Oracle, removing the Classpath +Exception could therefore effectively compromise your ability to +further distribute the package. ---- +Proceed with caution and we recommend that you obtain the advice of a +lawyer skilled in open source matters before removing the Classpath +Exception or making modifications to this package which may +subsequently be redistributed and/or involve the use of third party +software. -## The GNU General Public License (GPL) Version 2, June 1991 +CLASSPATH EXCEPTION +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License version 2 cover the whole +combination. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from or +based on this library. If you modify this library, you may extend this +exception to your version of the library, but you are not obligated to +do so. If you do not wish to do so, delete this exception statement +from your version. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +-------------------------------------------------------------------------------- - Preamble +239. Group: javax.annotation Name: javax.annotation-api Version: 1.3.2 - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. +Manifest Project URL: https://javaee.github.io/glassfish - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. +POM Project URL: http://jcp.org/en/jsr/detail?id=250 - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. +POM License: CDDL + GPLv2 with classpath exception - https://github.com/javaee/javax.annotation/blob/master/LICENSE - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. +Embedded license: - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + **************************************** - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. +1. Definitions. - The precise terms and conditions for copying, distribution and - modification follow. + 1.1. Contributor. means each individual or entity that creates or contributes to the creation of Modifications. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + 1.2. Contributor Version. means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + 1.4. Executable. means the Covered Software in any form other than Source Code. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + 1.5. Initial Developer. means the individual or entity that first makes Original Software available under this License. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + 1.6. Larger Work. means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + 1.7. License. means this document. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + 1.8. 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. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + 1.9. Modifications. means the Source Code and Executable form of any of the following: - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + B. Any new file that contains any part of the Original Software or previous Modification; or - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + C. Any new file that is contributed or otherwise made available under the terms of this License. - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + 1.10. Original Software. means the Source Code and Executable form of computer software code that is originally released under this License. - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + 1.11. 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. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + 1.12. Source Code. means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + 1.13. You. (or .Your.) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) +2. License Grants. - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. + 2.1. The Initial Developer Grant. - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. + Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + (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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License. - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + 2.2. Contributor Grant. - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this 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 Software and/or as part of a Larger Work; and - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + (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). - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + (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) 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 (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. +3. Distribution Obligations. - NO WARRANTY + 3.1. Availability of Source Code. + Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. + 3.2. Modifications. + The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + 3.3. Required Notices. + You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. - END OF TERMS AND CONDITIONS + 3.4. Application of Additional Terms. + You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients. rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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. - How to Apply These Terms to Your New Programs + 3.5. Distribution of Executable Versions. + You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipient.s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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. - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + 3.6. Larger Works. + You may create a Larger Work by combining Covered Software 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 Software. - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. +4. Versions of the License. - One line to give the program's name and a brief idea of what it does. - Copyright (C) + 4.1. New Versions. + Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + 4.2. Effect of New Versions. + You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + 4.3. Modified Versions. + When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +5. DISCLAIMER OF WARRANTY. - Also add information on how to contact you by electronic and paper mail. + COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: +6. TERMINATION. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + 6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as .Participant.) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. +7. LIMITATION OF LIABILITY. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + 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 SOFTWARE, 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 LOST PROFITS, 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. - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. +8. U.S. GOVERNMENT END USERS. ---- + The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. -## CLASSPATH EXCEPTION +9. MISCELLANEOUS. - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction.s conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. +10. 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. -# Notices for the Jakarta RESTful Web Services Project + NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) -This content is produced and maintained by the **Jakarta RESTful Web Services** -project. + The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. -* Project home: https://projects.eclipse.org/projects/ee4j.jaxrs -## Trademarks +The GNU General Public License (GPL) Version 2, June 1991 -**Jakarta RESTful Web Services** is a trademark of the Eclipse Foundation. -## Copyright +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -## Declared Project Licenses +Preamble -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. -## Source Code +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. -The project maintains the following source code repositories: +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. -* https://github.com/eclipse-ee4j/jaxrs-api +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. -## Third-party Content +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. -This project leverages the following third party content. +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. -javaee-api (7.0) +The precise terms and conditions for copying, distribution and modification follow. -* License: Apache-2.0 AND W3C -JUnit (4.11) +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -* License: Common Public License 1.0 +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". -Mockito (2.16.0) +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. -* Project: http://site.mockito.org -* Source: https://github.com/mockito/mockito/releases/tag/v2.16.0 +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. -## Cryptography +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. --------------------------------------------------------------------------------- + b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. -263. Group: jakarta.xml.bind Name: jakarta.xml.bind-api Version: 2.3.3 + c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) -Manifest Project URL: https://www.eclipse.org +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. -POM License: Eclipse Distribution License - v 1.0 - http://www.eclipse.org/org/documents/edl-v10.php +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: -Embedded license: + a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - **************************************** + b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) - Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - - Neither the name of the Eclipse Foundation, Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. - **************************************** +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. -[//]: # " Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. " -[//]: # " " -[//]: # " This program and the accompanying materials are made available under the " -[//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at " -[//]: # " http://www.eclipse.org/org/documents/edl-v10.php. " -[//]: # " " -[//]: # " SPDX-License-Identifier: BSD-3-Clause " +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. -# Notices for Jakarta XML Binding +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. -This content is produced and maintained by the Jakarta XML Binding -project. +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. -* Project home: https://projects.eclipse.org/projects/ee4j.jaxb +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. -## Trademarks +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. -Jakarta XML Binding is a trademark of the Eclipse Foundation. +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. -## Copyright +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. -## Declared Project Licenses +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -This program and the accompanying materials are made available under the terms -of the Eclipse Distribution License v. 1.0 which is available at -http://www.eclipse.org/org/documents/edl-v10.php. +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. -SPDX-License-Identifier: BSD-3-Clause +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. -## Source Code +NO WARRANTY -The project maintains the following source code repositories: +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -* https://github.com/eclipse-ee4j/jaxb-api -* https://github.com/eclipse-ee4j/jaxb-tck +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -## Third-party Content +END OF TERMS AND CONDITIONS -This project leverages the following third party content. -Apache River (3.0.0) +How to Apply These Terms to Your New Programs -* License: Apache-2.0 AND BSD-3-Clause +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. -ASM 7 (n/a) +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. -* License: BSD-3-Clause -* Project: https://asm.ow2.io/ -* Source: - https://repository.ow2.org/nexus/#nexus-search;gav~org.ow2.asm~asm-commons~~~~kw,versionexpand + One line to give the program's name and a brief idea of what it does. -JTHarness (5.0) + Copyright (C) -* License: (GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) -* Project: https://wiki.openjdk.java.net/display/CodeTools/JT+Harness -* Source: http://hg.openjdk.java.net/code-tools/jtharness/ + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. -normalize.css (3.0.2) + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -* License: MIT + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -SigTest (n/a) +Also add information on how to contact you by electronic and paper mail. -* License: GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +If the program is interactive, make it output a short notice like this when it starts in an interactive mode: -## Cryptography + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. --------------------------------------------------------------------------------- +You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: -264. Group: javax.activation Name: activation Version: 1.1 + Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. -POM Project URL: http://java.sun.com/products/javabeans/jaf/index.jsp + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice -POM License: Common Development and Distribution License (CDDL) v1.0 - https://glassfish.dev.java.net/public/CDDLv1.0.html +This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. -Embedded license: - **************************************** +"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - -1. Definitions. - -1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications. - -1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. - -1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. - -1.4. Executable means the Covered Software in any form other than Source Code. - -1.5. Initial Developer means the individual or entity that first makes Original Software available under this License. - -1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. - -1.7. License means this document. - -1.8. 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 the Source Code and Executable form of any of the following: - -A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; - -B. Any new file that contains any part of the Original Software or previous Modification; or - -C. Any new file that is contributed or otherwise made available under the terms of this License. - -1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License. - -1.11. 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.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. - -1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. License Grants. - -2.1. The Initial Developer Grant. -Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: -(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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and -(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). -(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party 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 Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices. - -2.2. Contributor Grant. -Conditioned upon Your compliance with Section 3.1 below and 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 Software 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 distributes or otherwise makes the Modifications available to a third party. -(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)�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 (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. - -3.1. Availability of Source Code. - -Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. - -3.2. Modifications. - -The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. - -3.3. Required Notices. -You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. - -3.4. Application of Additional Terms. -You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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.5. Distribution of Executable Versions. -You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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.6. Larger Works. -You may create a Larger Work by combining Covered Software 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 Software. - -4. Versions of the License. - -4.1. New Versions. -Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. - -4.2. Effect of New Versions. - -You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. -4.3. Modified Versions. - -When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License. - -5. DISCLAIMER OF WARRANTY. - -COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -6. TERMINATION. - -6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. - -6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. - -6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. - -7. 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 SOFTWARE, 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 LOST PROFITS, 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 PARTYS 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. - -8. U.S. GOVERNMENT END USERS. - -The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. - -9. 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. - -10. 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. - -NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) -The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. - - - +Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words + +"Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code." + +Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination. + +As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on this library.? If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so.? If you do not wish to do so, delete this exception statement from your version. -------------------------------------------------------------------------------- -265. Group: javax.activation Name: activation Version: 1.1.1 +240. Group: javax.inject Name: javax.inject Version: 1 -POM Project URL: http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp +POM Project URL: http://code.google.com/p/atinject/ + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +241. Group: javax.servlet Name: javax.servlet-api Version: 3.1.0 + +Manifest Project URL: https://glassfish.dev.java.net -POM License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - https://glassfish.dev.java.net/public/CDDLv1.0.html +POM Project URL: http://servlet-spec.java.net + +POM License: CDDL + GPLv2 with classpath exception - https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html Embedded license: @@ -17036,7 +16338,7 @@ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 8. U.S. GOVERNMENT END USERS. - The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. + The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. 9. MISCELLANEOUS. @@ -17191,914 +16493,931 @@ As a special exception, the copyright holders of this library give you permissio -------------------------------------------------------------------------------- -266. Group: javax.activation Name: javax.activation-api Version: 1.2.0 +242. Group: javax.servlet.jsp Name: jsp-api Version: 2.1 -Manifest Project URL: http://www.oracle.com +-------------------------------------------------------------------------------- -POM License: CDDL/GPLv2+CE - https://github.com/javaee/activation/blob/master/LICENSE.txt +243. Group: javax.validation Name: validation-api Version: 2.0.1.Final + +POM Project URL: http://beanvalidation.org + +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1 +Bean Validation API -1. Definitions. +License: Apache License, Version 2.0 +See the license.txt file in the root directory or . - 1.1. "Contributor" means each individual or entity that creates or - contributes to the creation of Modifications. +-------------------------------------------------------------------------------- - 1.2. "Contributor Version" means the combination of the Original - Software, prior Modifications used by a Contributor (if any), and - the Modifications made by that particular Contributor. +244. Group: javax.ws.rs Name: javax.ws.rs-api Version: 2.1.1 - 1.3. "Covered Software" means (a) the Original Software, or (b) - Modifications, or (c) the combination of files containing Original - Software with files containing Modifications, in each case including - portions thereof. +Manifest Project URL: https://www.eclipse.org/org/foundation/ - 1.4. "Executable" means the Covered Software in any form other than - Source Code. +POM Project URL: https://github.com/eclipse-ee4j/jaxrs-api - 1.5. "Initial Developer" means the individual or entity that first - makes Original Software available under this License. +POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 - 1.6. "Larger Work" means a work which combines Covered Software or - portions thereof with code not governed by the terms of this License. +POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html - 1.7. "License" means this document. +-------------------------------------------------------------------------------- - 1.8. "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. +245. Group: javax.ws.rs Name: jsr311-api Version: 1.1.1 - 1.9. "Modifications" means the Source Code and Executable form of - any of the following: +Manifest Project URL: http://www.sun.com/ - A. Any file that results from an addition to, deletion from or - modification of the contents of a file containing Original Software - or previous Modifications; +POM Project URL: https://jsr311.dev.java.net - B. Any new file that contains any part of the Original Software or - previous Modification; or +POM License: + CDDL License + - http://www.opensource.org/licenses/cddl1.php - C. Any new file that is contributed or otherwise made available - under the terms of this License. +-------------------------------------------------------------------------------- - 1.10. "Original Software" means the Source Code and Executable form - of computer software code that is originally released under this - License. +246. Group: javax.xml.bind Name: jaxb-api Version: 2.2.11 - 1.11. "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. +Manifest Project URL: http://www.oracle.com/ - 1.12. "Source Code" means (a) the common form of computer software - code in which modifications are made and (b) associated - documentation included in or with such code. +POM Project URL: http://jaxb.java.net/ - 1.13. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, - this License. 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. +POM License: CDDL 1.1 - https://glassfish.java.net/public/CDDL+GPL_1_1.html -2. License Grants. +POM License: GPL2 w/ CPE - https://glassfish.java.net/public/CDDL+GPL_1_1.html - 2.1. The Initial Developer Grant. +-------------------------------------------------------------------------------- - Conditioned upon Your compliance with Section 3.1 below and subject - to third party intellectual property claims, the Initial Developer - hereby grants You a world-wide, royalty-free, non-exclusive license: +247. Group: javax.xml.bind Name: jaxb-api Version: 2.2.2 - (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 - Software (or portions thereof), with or without Modifications, - and/or as part of a Larger Work; and +POM Project URL: https://jaxb.dev.java.net/ - (b) under Patent Claims infringed by the making, using or selling of - Original Software, to make, have made, use, practice, sell, and - offer for sale, and/or otherwise dispose of the Original Software - (or portions thereof). +POM License: CDDL 1.1 - https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html - (c) The licenses granted in Sections 2.1(a) and (b) are effective on - the date Initial Developer first distributes or otherwise makes the - Original Software available to a third party under the terms of this - License. +POM License: GPL2 w/ CPE - https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: (1) for code that You delete from the Original Software, or - (2) for infringements caused by: (i) the modification of the - Original Software, or (ii) the combination of the Original Software - with other software or devices. +Embedded license: - 2.2. Contributor Grant. + **************************************** - Conditioned upon Your compliance with Section 3.1 below and subject - to third party intellectual property claims, each Contributor hereby - grants You a world-wide, royalty-free, non-exclusive license: +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - (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 Software - and/or as part of a Larger Work; and +1. Definitions. - (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). + 1.1. Contributor. means each individual or entity that creates or +contributes to the creation of Modifications. - (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective - on the date Contributor first distributes or otherwise makes the - Modifications available to a third party. + 1.2. Contributor Version. means the combination of the Original +Software, prior Modifications used by a Contributor (if any), and the +Modifications made by that particular Contributor. - (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) 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 (3) - under Patent Claims infringed by Covered Software in the absence of - Modifications made by that Contributor. + 1.3. Covered Software. means (a) the Original Software, or (b) +Modifications, or (c) the combination of files containing Original +Software with files containing Modifications, in each case including +portions thereof. -3. Distribution Obligations. + 1.4. Executable. means the Covered Software in any form other than +Source Code. - 3.1. Availability of Source Code. + 1.5. Initial Developer. means the individual or entity that first +makes Original Software available under this License. - Any Covered Software that You distribute or otherwise make available - in Executable form must also be made available in Source Code form - and that Source Code form must be distributed only under the terms - of this License. You must include a copy of this License with every - copy of the Source Code form of the Covered Software You distribute - or otherwise make available. You must inform recipients of any such - Covered Software in Executable form as to how they can obtain such - Covered Software in Source Code form in a reasonable manner on or - through a medium customarily used for software exchange. + 1.6. Larger Work. means a work which combines Covered Software or +portions thereof with code not governed by the terms of this License. - 3.2. Modifications. + 1.7. License. means this document. - The Modifications that You create or to which You contribute are - governed by the terms of this License. You represent that You - believe Your Modifications are Your original creation(s) and/or You - have sufficient rights to grant the rights conveyed by this License. + 1.8. 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. - 3.3. Required Notices. + 1.9. Modifications. means the Source Code and Executable form of any +of the following: - You must include a notice in each of Your Modifications that - identifies You as the Contributor of the Modification. You may not - remove or alter any copyright, patent or trademark notices contained - within the Covered Software, or any notices of licensing or any - descriptive text giving attribution to any Contributor or the - Initial Developer. + A. Any file that results from an addition to, deletion from or +modification of the contents of a file containing Original Software or +previous Modifications; - 3.4. Application of Additional Terms. + B. Any new file that contains any part of the Original Software +or previous Modification; or - You may not offer or impose any terms on any Covered Software in - Source Code form that alters or restricts the applicable version of - this License or the recipients' rights hereunder. You may choose to - offer, and to charge a fee for, warranty, support, indemnity or - liability obligations to one or more recipients of Covered Software. - 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 that 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. + C. Any new file that is contributed or otherwise made available +under the terms of this License. - 3.5. Distribution of Executable Versions. + 1.10. Original Software. means the Source Code and Executable form of +computer software code that is originally released under this License. - You may distribute the Executable form of the Covered Software under - the terms of this License or under the terms of 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 form does not attempt to - limit or alter the recipient's rights in the Source Code form from - the rights set forth in this License. If You distribute the Covered - Software in Executable form 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 - 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. + 1.11. 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. - 3.6. Larger Works. + 1.12. Source Code. means (a) the common form of computer software +code in which modifications are made and (b) associated documentation +included in or with such code. - You may create a Larger Work by combining Covered Software 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 - Software. + 1.13. You. (or .Your.) means an individual or a legal entity +exercising rights under, and complying with all of the terms of, this +License. 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. -4. Versions of the License. +2. License Grants. - 4.1. New Versions. + 2.1. The Initial Developer Grant. - Oracle is the initial license steward and may publish revised and/or - new versions of this License from time to time. Each version will be - given a distinguishing version number. Except as provided in Section - 4.3, no one other than the license steward has the right to modify - this License. + Conditioned upon Your compliance with Section 3.1 below and +subject to third party intellectual property claims, the Initial +Developer hereby grants You a world-wide, royalty-free, non-exclusive +license: - 4.2. Effect of New Versions. + (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 Software (or +portions thereof), with or without Modifications, and/or as part of a +Larger Work; and - You may always continue to use, distribute or otherwise make the - Covered Software available under the terms of the version of the - License under which You originally received the Covered Software. If - the Initial Developer includes a notice in the Original Software - prohibiting it from being distributed or otherwise made available - under any subsequent version of the License, You must distribute and - make the Covered Software available under the terms of the version - of the License under which You originally received the Covered - Software. Otherwise, You may also choose to use, distribute or - otherwise make the Covered Software available under the terms of any - subsequent version of the License published by the license steward. + (b) under Patent Claims infringed by the making, using or +selling of Original Software, to make, have made, use, practice, sell, +and offer for sale, and/or otherwise dispose of the Original Software +(or portions thereof). - 4.3. Modified Versions. + (c) The licenses granted in Sections 2.1(a) and (b) are +effective on the date Initial Developer first distributes or otherwise +makes the Original Software available to a third party under the terms +of this License. - When You are an Initial Developer and You want to create a new - license for Your Original Software, You may create and use a - modified version of this License if You: (a) rename the license and - remove any references to the name of the license steward (except to - note that the license differs from this License); and (b) otherwise - make it clear that the license contains terms which differ from this - License. + (d) Notwithstanding Section 2.1(b) above, no patent license is +granted: (1) for code that You delete from the Original Software, or (2) +for infringements caused by: (i) the modification of the Original +Software, or (ii) the combination of the Original Software with other +software or devices. -5. DISCLAIMER OF WARRANTY. + 2.2. Contributor Grant. - COVERED SOFTWARE 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 SOFTWARE - 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS - AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + Conditioned upon Your compliance with Section 3.1 below and subject +to third party intellectual property claims, each Contributor hereby +grants You a world-wide, royalty-free, non-exclusive license: -6. TERMINATION. + (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 Software and/or as part of a Larger Work; +and - 6.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. - Provisions which, by their nature, must remain in effect beyond the - termination of this License shall survive. + (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). - 6.2. If You assert a patent infringement claim (excluding - declaratory judgment actions) against Initial Developer or a - Contributor (the Initial Developer or Contributor against whom You - assert such claim is referred to as "Participant") alleging that the - Participant Software (meaning the Contributor Version where the - Participant is a Contributor or the Original Software where the - Participant is the Initial Developer) directly or indirectly - infringes any patent, then any and all rights granted directly or - indirectly to You by such Participant, the Initial Developer (if the - Initial Developer is not the Participant) and all Contributors under - Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice - from Participant terminate prospectively and automatically at the - expiration of such 60 day notice period, unless if within such 60 - day period You withdraw Your claim with respect to the Participant - Software against such Participant either unilaterally or pursuant to - a written agreement with Participant. + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are +effective on the date Contributor first distributes or otherwise makes +the Modifications available to a third party. - 6.3. If You assert a patent infringement claim against Participant - alleging that the Participant Software 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. + (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) 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 (3) under Patent +Claims infringed by Covered Software in the absence of Modifications +made by that Contributor. - 6.4. In the event of termination under Sections 6.1 or 6.2 above, - all end user licenses that have been validly granted by You or any - distributor hereunder prior to termination (excluding licenses - granted to You by any distributor) shall survive termination. +3. Distribution Obligations. -7. LIMITATION OF LIABILITY. + 3.1. Availability of Source Code. + Any Covered Software that You distribute or otherwise make +available in Executable form must also be made available in Source Code +form and that Source Code form must be distributed only under the terms +of this License. You must include a copy of this License with every copy +of the Source Code form of the Covered Software You distribute or +otherwise make available. You must inform recipients of any such Covered +Software in Executable form as to how they can obtain such Covered +Software in Source Code form in a reasonable manner on or through a +medium customarily used for software exchange. - 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 SOFTWARE, 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. + 3.2. Modifications. + The Modifications that You create or to which You contribute are +governed by the terms of this License. You represent that You believe +Your Modifications are Your original creation(s) and/or You have +sufficient rights to grant the rights conveyed by this License. -8. U.S. GOVERNMENT END USERS. + 3.3. Required Notices. + You must include a notice in each of Your Modifications that +identifies You as the Contributor of the Modification. You may not +remove or alter any copyright, patent or trademark notices contained +within the Covered Software, or any notices of licensing or any +descriptive text giving attribution to any Contributor or the Initial +Developer. - The Covered Software is a "commercial item," as that term is defined - in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" (as that term is defined at 48 C.F.R. � - 252.227-7014(a)(1)) 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 Software - with only those rights set forth herein. This U.S. Government Rights - clause is in lieu of, and supersedes, any other FAR, DFAR, or other - clause or provision that addresses Government rights in computer - software under this License. + 3.4. Application of Additional Terms. + You may not offer or impose any terms on any Covered Software in +Source Code form that alters or restricts the applicable version of this +License or the recipients. rights hereunder. You may choose to offer, +and to charge a fee for, warranty, support, indemnity or liability +obligations to one or more recipients of Covered Software. 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 that 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. -9. MISCELLANEOUS. + 3.5. Distribution of Executable Versions. + You may distribute the Executable form of the Covered Software +under the terms of this License or under the terms of 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 form does not attempt to limit or alter the +recipient.s rights in the Source Code form from the rights set forth in +this License. If You distribute the Covered Software in Executable form +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 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. - 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 - the law of the jurisdiction specified in a notice contained within - the Original Software (except to the extent applicable law, if any, - provides otherwise), excluding such jurisdiction's conflict-of-law - provisions. Any litigation relating to this License shall be subject - to the jurisdiction of the courts located in the jurisdiction and - venue specified in a notice contained within the Original Software, - 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. You - agree that You alone are responsible for compliance with the United - States export administration regulations (and the export control - laws and regulation of any other countries) when You use, distribute - or otherwise make available any Covered Software. + 3.6. Larger Works. + You may create a Larger Work by combining Covered Software 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 Software. -10. RESPONSIBILITY FOR CLAIMS. +4. Versions of the License. - 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. + 4.1. New Versions. + Sun Microsystems, Inc. is the initial license steward and may +publish revised and/or new versions of this License from time to time. +Each version will be given a distinguishing version number. Except as +provided in Section 4.3, no one other than the license steward has the +right to modify this License. ------------------------------------------------------------------------- + 4.2. Effect of New Versions. + You may always continue to use, distribute or otherwise make the +Covered Software available under the terms of the version of the License +under which You originally received the Covered Software. If the Initial +Developer includes a notice in the Original Software prohibiting it from +being distributed or otherwise made available under any subsequent +version of the License, You must distribute and make the Covered +Software available under the terms of the version of the License under +which You originally received the Covered Software. Otherwise, You may +also choose to use, distribute or otherwise make the Covered Software +available under the terms of any subsequent version of the License +published by the license steward. -NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION -LICENSE (CDDL) + 4.3. Modified Versions. + When You are an Initial Developer and You want to create a new +license for Your Original Software, You may create and use a modified +version of this License if You: (a) rename the license and remove any +references to the name of the license steward (except to note that the +license differs from this License); and (b) otherwise make it clear that +the license contains terms which differ from this License. -The code released under the CDDL shall be governed by the laws of the -State of California (excluding conflict-of-law provisions). Any -litigation relating to this License shall be subject to the jurisdiction -of the Federal Courts of the Northern District of California and the -state courts of the State of California, with venue lying in Santa Clara -County, California. +5. DISCLAIMER OF WARRANTY. + COVERED SOFTWARE 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 SOFTWARE 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 +SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS +DISCLAIMER. +6. TERMINATION. - The GNU General Public License (GPL) Version 2, June 1991 + 6.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. Provisions +which, by their nature, must remain in effect beyond the termination of +this License shall survive. -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor -Boston, MA 02110-1335 -USA + 6.2. If You assert a patent infringement claim (excluding +declaratory judgment actions) against Initial Developer or a Contributor +(the Initial Developer or Contributor against whom You assert such claim +is referred to as .Participant.) alleging that the Participant Software +(meaning the Contributor Version where the Participant is a Contributor +or the Original Software where the Participant is the Initial Developer) +directly or indirectly infringes any patent, then any and all rights +granted directly or indirectly to You by such Participant, the Initial +Developer (if the Initial Developer is not the Participant) and all +Contributors under Sections 2.1 and/or 2.2 of this License shall, upon +60 days notice from Participant terminate prospectively and +automatically at the expiration of such 60 day notice period, unless if +within such 60 day period You withdraw Your claim with respect to the +Participant Software against such Participant either unilaterally or +pursuant to a written agreement with Participant. -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. + 6.3. In the event of termination under Sections 6.1 or 6.2 above, +all end user licenses that have been validly granted by You or any +distributor hereunder prior to termination (excluding licenses granted +to You by any distributor) shall survive termination. -Preamble +7. LIMITATION OF LIABILITY. -The licenses for most software are designed to take away your freedom to -share and change it. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change free software--to -make sure the software is free for all its users. This General Public -License applies to most of the Free Software Foundation's software and -to any other program whose authors commit to using it. (Some other Free -Software Foundation software is covered by the GNU Library General -Public License instead.) You can apply it to your programs, too. + 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 SOFTWARE, +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 LOST PROFITS, 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. -When we speak of free software, we are referring to freedom, not price. -Our General Public Licenses are designed to make sure that you have the -freedom to distribute copies of free software (and charge for this -service if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs; and that you know you can do these things. +8. U.S. GOVERNMENT END USERS. -To protect your rights, we need to make restrictions that forbid anyone -to deny you these rights or to ask you to surrender the rights. These -restrictions translate to certain responsibilities for you if you + The Covered Software is a .commercial item,. as that term is defined +in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer +software. (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) +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 Software with only those rights set forth +herein. This U.S. Government Rights clause is in lieu of, and supersedes, +any other FAR, DFAR, or other clause or provision that addresses +Government rights in computer software under this License. + +9. 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 the +law of the jurisdiction specified in a notice contained within the +Original Software (except to the extent applicable law, if any, provides +otherwise), excluding such jurisdiction.s conflict-of-law provisions. +Any litigation relating to this License shall be subject to the +jurisdiction of the courts located in the jurisdiction and venue +specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for +compliance with the United States export administration regulations (and +the export control laws and regulation of any other countries) when You +use, distribute or otherwise make available any Covered Software. + +10. 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. + + NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND +DISTRIBUTION LICENSE (CDDL) + + The code released under the CDDL shall be governed by the laws of the +State of California (excluding conflict-of-law provisions). Any +litigation relating to this License shall be subject to the jurisdiction +of the Federal Courts of the Northern District of California and the +state courts of the State of California, with venue lying in Santa Clara +County, California. + + +The GNU General Public License (GPL) Version 2, June 1991 + + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, +Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public +License applies to most of the Free Software Foundation's software and +to any other program whose authors commit to using it. (Some other Free +Software Foundation software is covered by the GNU Library General +Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. +Our General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this +service if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone +to deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. -For example, if you distribute copies of such a program, whether gratis +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. -You must make sure that they, too, receive or can get the source code. +You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original authors' reputations. -Finally, any free program is threatened constantly by software patents. -We wish to avoid the danger that redistributors of a free program will -individually obtain patent licenses, in effect making the program +Finally, any free program is threatened constantly by software patents. +We wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. -The precise terms and conditions for copying, distribution and +The precise terms and conditions for copying, distribution and modification follow. + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -0. This License applies to any program or other work which contains a +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under -the terms of this General Public License. The "Program", below, refers -to any such program or work, and a "work based on the Program" means -either the Program or any derivative work under copyright law: that is -to say, a work containing the Program or a portion of it, either -verbatim or with modifications and/or translated into another language. -(Hereinafter, translation is included without limitation in the term +the terms of this General Public License. The "Program", below, refers +to any such program or work, and a "work based on the Program" means +either the Program or any derivative work under copyright law: that is +to say, a work containing the Program or a portion of it, either +verbatim or with modifications and/or translated into another language. +(Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of running -the Program is not restricted, and the output from the Program is -covered only if its contents constitute a work based on the Program -(independent of having been made by running the Program). Whether that +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of running +the Program is not restricted, and the output from the Program is +covered only if its contents constitute a work based on the Program +(independent of having been made by running the Program). Whether that is true depends on what the Program does. -1. You may copy and distribute verbatim copies of the Program's source -code as you receive it, in any medium, provided that you conspicuously -and appropriately publish on each copy an appropriate copyright notice -and disclaimer of warranty; keep intact all the notices that refer to -this License and to the absence of any warranty; and give any other +1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice +and disclaimer of warranty; keep intact all the notices that refer to +this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. -You may charge a fee for the physical act of transferring a copy, and +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. -2. You may modify your copy or copies of the Program or any portion of -it, thus forming a work based on the Program, and copy and distribute -such modifications or work under the terms of Section 1 above, provided +2. You may modify your copy or copies of the Program or any portion of +it, thus forming a work based on the Program, and copy and distribute +such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + a) You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + b) You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any part +thereof, to be licensed as a whole at no charge to all third parties +under the terms of this License. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + c) If the modified program normally reads commands interactively when +run, you must cause it, when started running for such interactive use in +the most ordinary way, to print or display an announcement including an +appropriate copyright notice and a notice that there is no warranty (or +else, saying that you provide a warranty) and that users may +redistribute the program under these conditions, and telling the user +how to view a copy of this License. (Exception: if the Program itself is +interactive but does not normally print such an announcement, your work +based on the Program is not required to print an announcement.) -These requirements apply to the modified work as a whole. If +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and -can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you +can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on -the Program, the distribution of the whole must be on the terms of this -License, whose permissions for other licensees extend to the entire +the Program, the distribution of the whole must be on the terms of this +License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or collective works based on the Program. -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of a -storage or distribution medium does not bring the other work under the +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the scope of this License. -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections +1 and 2 above provided that you also do one of the following: - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + a) Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections 1 and +2 above on a medium customarily used for software interchange; or, - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + b) Accompany it with a written offer, valid for at least three years, +to give any third party, for a charge no more than your cost of +physically performing source distribution, a complete machine-readable +copy of the corresponding source code, to be distributed under the terms +of Sections 1 and 2 above on a medium customarily used for software +interchange; or, - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) + c) Accompany it with the information you received as to the offer to +distribute corresponding source code. (This alternative is allowed only +for noncommercial distribution and only if you received the program in +object code or executable form with such an offer, in accord with +Subsection b above.) -The source code for a work means the preferred form of the work for +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code -means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to control -compilation and installation of the executable. However, as a special +means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to control +compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies the +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies the executable. -If distribution of executable or object code is made by offering access +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source -code, even though third parties are not compelled to copy the source +code, even though third parties are not compelled to copy the source along with the object code. -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt otherwise -to copy, modify, sublicense or distribute the Program is void, and will +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties -who have received copies, or rights, from you under this License will -not have their licenses terminated so long as such parties remain in +who have received copies, or rights, from you under this License will +not have their licenses terminated so long as such parties remain in full compliance. -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and all -its terms and conditions for copying, distributing or modifying the -Program or works based on it. +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the Program), +you indicate your acceptance of this License to do so, and all its terms +and conditions for copying, distributing or modifying the Program or +works based on it. -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further restrictions -on the recipients' exercise of the rights granted herein. You are not +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further restrictions +on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute -so as to satisfy simultaneously your obligations under this License and -any other pertinent obligations, then as a consequence you may not -distribute the Program at all. For example, if a patent license would -not permit royalty-free redistribution of the Program by all those who +so as to satisfy simultaneously your obligations under this License and +any other pertinent obligations, then as a consequence you may not +distribute the Program at all. For example, if a patent license would +not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other circumstances. -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented -by public license practices. Many people have made generous -contributions to the wide range of software distributed through that +by public license practices. Many people have made generous +contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to -the author/donor to decide if he or she is willing to distribute -software through any other system and a licensee cannot impose that choice. +the author/donor to decide if he or she is willing to distribute +software through any other system and a licensee cannot impose that +choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License may -add an explicit geographical distribution limitation excluding those -countries, so that distribution is permitted only in or among countries -not thus excluded. In such case, this License incorporates the +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License may +add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among countries +not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. -9. The Free Software Foundation may publish revised and/or new -versions of the General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Program does not specify a version +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the -author to ask for permission. For software which is copyrighted by the -Free Software Foundation, write to the Free Software Foundation; we -sometimes make exceptions for this. Our decision will be guided by the -two goals of preserving the free status of all derivatives of our free +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE -ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH -YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL -NECESSARY SERVICING, REPAIR OR CORRECTION. +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE +ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. +SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY +SERVICING, REPAIR OR CORRECTION. -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR -DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL -DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM -(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED -INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF -THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR +DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM +(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF +THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS + How to Apply These Terms to Your New Programs -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. -To do so, attach the following notices to the program. It is safest to -attach them to the start of each source file to most effectively convey -the exclusion of warranty; and each file should have at least the +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - One line to give the program's name and a brief idea of what it does. - Copyright (C) + One line to give the program's name and a brief idea of what it does. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + Copyright (C) - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +Public License for more details. + + You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, +Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this +If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show +w'. This is free software, and you are welcome to redistribute it under +certain conditions; type `show c' for details. -The hypothetical commands `show w' and `show c' should show the +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands -you use may be called something other than `show w' and `show c'; they +you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + Yoyodyne, Inc., hereby disclaims all copyright interest in the +program `Gnomovision' (which makes passes at compilers) written by James +Hacker. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice -This General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications -with the library. If this is what you want to do, use the GNU Library +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications +with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. -# -Certain source files distributed by Oracle America, Inc. and/or its -affiliates are subject to the following clarification and special -exception to the GPLv2, based on the GNU Project exception for its -Classpath libraries, known as the GNU Classpath Exception, but only -where Oracle has expressly included in the particular source file's -header the words "Oracle designates this particular file as subject to -the "Classpath" exception as provided by Oracle in the LICENSE file -that accompanied this code." +"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 -You should also note that Oracle includes multiple, independent -programs in this software package. Some of those programs are provided -under licenses deemed incompatible with the GPLv2 by the Free Software -Foundation and others. For example, the package includes programs -licensed under the Apache License, Version 2.0. Such programs are -licensed to you under their original licenses. +Certain source files distributed by Sun Microsystems, Inc. are subject +to the following clarification and special exception to the GPL Version +2, but only where Sun has expressly included in the particular source +file's header the words -Oracle facilitates your further distribution of this package by adding -the Classpath Exception to the necessary parts of its GPLv2 code, which -permits you to use that code in combination with other independent -modules not licensed under the GPLv2. However, note that this would -not permit you to commingle code under an incompatible license with -Oracle's GPLv2 licensed code by, for example, cutting and pasting such -code into a file also containing Oracle's GPLv2 licensed code and then -distributing the result. Additionally, if you were to remove the -Classpath Exception from any of the files to which it applies and -distribute the result, you would likely be required to license some or -all of the other code in that distribution under the GPLv2 as well, and -since the GPLv2 is incompatible with the license terms of some items -included in the distribution by Oracle, removing the Classpath -Exception could therefore effectively compromise your ability to -further distribute the package. - -Proceed with caution and we recommend that you obtain the advice of a -lawyer skilled in open source matters before removing the Classpath -Exception or making modifications to this package which may -subsequently be redistributed and/or involve the use of third party -software. +"Sun designates this particular file as subject to the "Classpath" +exception as provided by Sun in the License file that accompanied this +code." -CLASSPATH EXCEPTION -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License version 2 cover the whole +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License Version 2 cover the whole combination. -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from or -based on this library. If you modify this library, you may extend this -exception to your version of the library, but you are not obligated to -do so. If you do not wish to do so, delete this exception statement -from your version. - +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent modules, +and to copy and distribute the resulting executable under terms of your +choice, provided that you also meet, for each linked independent module, +the terms and conditions of the license of that module.? An independent +module is a module which is not derived from or based on this library.? +If you modify this library, you may extend this exception to your +version of the library, but you are not obligated to do so.? If you do +not wish to do so, delete this exception statement from your version. + -------------------------------------------------------------------------------- -267. Group: javax.annotation Name: javax.annotation-api Version: 1.3.2 +248. Group: javax.xml.bind Name: jaxb-api Version: 2.3.1 -Manifest Project URL: https://javaee.github.io/glassfish +Manifest Project URL: http://www.oracle.com/ -POM Project URL: http://jcp.org/en/jsr/detail?id=250 +POM License: CDDL 1.1 - https://oss.oracle.com/licenses/CDDL+GPL-1.1 -POM License: CDDL + GPLv2 with classpath exception - https://github.com/javaee/javax.annotation/blob/master/LICENSE +POM License: GPL2 w/ CPE - https://oss.oracle.com/licenses/CDDL+GPL-1.1 Embedded license: **************************************** -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1 1. Definitions. - 1.1. Contributor. means each individual or entity that creates or contributes to the creation of Modifications. + 1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications. - 1.2. Contributor Version. means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. + 1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. - 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. + 1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. - 1.4. Executable. means the Covered Software in any form other than Source Code. + 1.4. "Executable" means the Covered Software in any form other than Source Code. - 1.5. Initial Developer. means the individual or entity that first makes Original Software available under this License. + 1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License. - 1.6. Larger Work. means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. + 1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. - 1.7. License. means this document. + 1.7. "License" means this document. - 1.8. 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.8. "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 the Source Code and Executable form of any of the following: + 1.9. "Modifications" means the Source Code and Executable form of any of the following: - A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; + A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; - B. Any new file that contains any part of the Original Software or previous Modification; or + B. Any new file that contains any part of the Original Software or previous Modification; or - C. Any new file that is contributed or otherwise made available under the terms of this License. + C. Any new file that is contributed or otherwise made available under the terms of this License. - 1.10. Original Software. means the Source Code and Executable form of computer software code that is originally released under this License. + 1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License. - 1.11. 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. "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.12. Source Code. means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. + 1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. - 1.13. You. (or .Your.) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. + 1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. License Grants. - 2.1. The Initial Developer Grant. + 2.1. The Initial Developer Grant. - Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: + Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: - (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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and + (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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and - (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). + (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). - (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License. + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party 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 Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. - 2.2. Contributor Grant. + 2.2. Contributor Grant. - Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: + Conditioned upon Your compliance with Section 3.1 below and 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 Software and/or as part of a Larger Work; and + (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 Software 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). + (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 distributes or otherwise makes the Modifications available to a third party. + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. - (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) 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 (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. + (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) 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 (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. 3. Distribution Obligations. - 3.1. Availability of Source Code. - Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. + 3.1. Availability of Source Code. - 3.2. Modifications. - The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. + Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. - 3.3. Required Notices. - You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. + 3.2. Modifications. - 3.4. Application of Additional Terms. - You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients. rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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. + The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. - 3.5. Distribution of Executable Versions. - You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipient.s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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.3. Required Notices. - 3.6. Larger Works. - You may create a Larger Work by combining Covered Software 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 Software. + You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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.6. Larger Works. + + You may create a Larger Work by combining Covered Software 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 Software. 4. Versions of the License. - 4.1. New Versions. - Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. + 4.1. New Versions. - 4.2. Effect of New Versions. - You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. + Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. - 4.3. Modified Versions. - When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. 5. DISCLAIMER OF WARRANTY. - COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 6. TERMINATION. - 6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. + 6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. - 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as .Participant.) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. + 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. - 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. + 6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software 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. + + 6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. 7. 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 SOFTWARE, 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 LOST PROFITS, 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. + 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 SOFTWARE, 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. 8. U.S. GOVERNMENT END USERS. - The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. + The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. 9. 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction.s conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. + 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. 10. 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. + 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. + +---------- +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) +The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. - NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) - The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. The GNU General Public License (GPL) Version 2, June 1991 @@ -18231,5955 +17550,934 @@ This General Public License does not permit incorporating your program into prop "CLASSPATH" EXCEPTION TO THE GPL VERSION 2 -Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words - -"Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code." +Certain source files distributed by Oracle are subject to the following clarification and special exception to the GPL Version 2, but only where Oracle has expressly included in the particular source file's header the words "Oracle designates this particular file as subject to the "Classpath" exception as provided by Oracle in the License file that accompanied this code." -Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination. +Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination. -As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on this library.? If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so.? If you do not wish to do so, delete this exception statement from your version. +As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. -------------------------------------------------------------------------------- -268. Group: javax.inject Name: javax.inject Version: 1 +249. Group: javax.xml.stream Name: stax-api Version: 1.0-2 -POM Project URL: http://code.google.com/p/atinject/ +POM License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - http://www.sun.com/cddl/cddl.html -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: GNU General Public Library - http://www.gnu.org/licenses/gpl.txt -------------------------------------------------------------------------------- -269. Group: javax.servlet Name: javax.servlet-api Version: 3.1.0 +250. Group: joda-time Name: joda-time Version: 2.10.14 -Manifest Project URL: https://glassfish.dev.java.net +Project URL: https://www.joda.org/joda-time/ -POM Project URL: http://servlet-spec.java.net +Manifest License: Apache 2.0 (Not packaged) -POM License: CDDL + GPLv2 with classpath exception - https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - -1. Definitions. - - 1.1. Contributor. means each individual or entity that creates or contributes to the creation of Modifications. - - 1.2. Contributor Version. means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. - - 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. - - 1.4. Executable. means the Covered Software in any form other than Source Code. - - 1.5. Initial Developer. means the individual or entity that first makes Original Software available under this License. - - 1.6. Larger Work. means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. - - 1.7. License. means this document. - - 1.8. 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 the Source Code and Executable form of any of the following: - - A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; - - B. Any new file that contains any part of the Original Software or previous Modification; or - - C. Any new file that is contributed or otherwise made available under the terms of this License. - - 1.10. Original Software. means the Source Code and Executable form of computer software code that is originally released under this License. - - 1.11. 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.12. Source Code. means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. - - 1.13. You. (or .Your.) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. License Grants. - - 2.1. The Initial Developer Grant. - - Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: - - (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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). - - (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party 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 Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. - - 2.2. Contributor Grant. - - Conditioned upon Your compliance with Section 3.1 below and 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 Software 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 distributes or otherwise makes the Modifications available to a third party. - - (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) 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 (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. - - 3.1. Availability of Source Code. - Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. - - 3.2. Modifications. - The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. - - 3.3. Required Notices. - You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. - - 3.4. Application of Additional Terms. - You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients. rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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.5. Distribution of Executable Versions. - You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipient.s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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.6. Larger Works. - You may create a Larger Work by combining Covered Software 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 Software. - -4. Versions of the License. - - 4.1. New Versions. - Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. - - 4.2. Effect of New Versions. - You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - 4.3. Modified Versions. - When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. + **************************************** -5. DISCLAIMER OF WARRANTY. +============================================================================= += NOTICE file corresponding to section 4d of the Apache License Version 2.0 = +============================================================================= +This product includes software developed by +Joda.org (https://www.joda.org/). - COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. +-------------------------------------------------------------------------------- -6. TERMINATION. +251. Group: joda-time Name: joda-time Version: 2.10.2 - 6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. +Project URL: https://www.joda.org/joda-time/ - 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as .Participant.) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. +Manifest License: Apache 2.0 (Not packaged) - 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. +POM License: Apache 2 - https://www.apache.org/licenses/LICENSE-2.0.txt -7. LIMITATION OF LIABILITY. +Embedded license: - 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 SOFTWARE, 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 LOST PROFITS, 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. + **************************************** -8. U.S. GOVERNMENT END USERS. - - The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. - -9. 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction.s conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. - -10. 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. - - NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) - - The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. - - -The GNU General Public License (GPL) Version 2, June 1991 - - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification follow. - - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. - - c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + **************************************** -3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: +============================================================================= += NOTICE file corresponding to section 4d of the Apache License Version 2.0 = +============================================================================= +This product includes software developed by +Joda.org (https://www.joda.org/). - a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +-------------------------------------------------------------------------------- - b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +252. Group: joda-time Name: joda-time Version: 2.12.2 - c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) +Project URL: https://www.joda.org/joda-time/ -The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. +Manifest License: Apache 2.0 (Not packaged) -If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. +Embedded license: -5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + **************************************** -6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + **************************************** -If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. +============================================================================= += NOTICE file corresponding to section 4d of the Apache License Version 2.0 = +============================================================================= +This product includes software developed by +Joda.org (https://www.joda.org/). -It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +-------------------------------------------------------------------------------- -This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +253. Group: joda-time Name: joda-time Version: 2.12.7 -8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. +Project URL: https://www.joda.org/joda-time/ -9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. +Manifest License: Apache 2.0 (Not packaged) -Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. +Embedded license: -NO WARRANTY + **************************************** -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - - Copyright (C) - - This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. - - -"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 - -Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words - -"Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code." - -Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination. - -As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on this library.? If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so.? If you do not wish to do so, delete this exception statement from your version. - --------------------------------------------------------------------------------- - -270. Group: javax.servlet.jsp Name: jsp-api Version: 2.1 - --------------------------------------------------------------------------------- - -271. Group: javax.validation Name: validation-api Version: 2.0.1.Final - -POM Project URL: http://beanvalidation.org - -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - -Bean Validation API - -License: Apache License, Version 2.0 -See the license.txt file in the root directory or . - --------------------------------------------------------------------------------- - -272. Group: javax.websocket Name: javax.websocket-api Version: 1.0 - -Manifest Project URL: http://www.oracle.com - -POM Project URL: http://websocket-spec.java.net - -POM License: - Dual license consisting of the CDDL v1.1 and GPL v2 - - https://glassfish.java.net/public/CDDL+GPL_1_1.html - --------------------------------------------------------------------------------- - -273. Group: javax.websocket Name: javax.websocket-client-api Version: 1.0 - -POM Project URL: http://websocket-spec.java.net - -POM License: - Dual license consisting of the CDDL v1.1 and GPL v2 - - https://glassfish.java.net/public/CDDL+GPL_1_1.html - --------------------------------------------------------------------------------- - -274. Group: javax.ws.rs Name: javax.ws.rs-api Version: 2.1.1 - -Manifest Project URL: https://www.eclipse.org/org/foundation/ - -POM Project URL: https://github.com/eclipse-ee4j/jaxrs-api - -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 - -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html - --------------------------------------------------------------------------------- - -275. Group: javax.ws.rs Name: jsr311-api Version: 1.1.1 - -Manifest Project URL: http://www.sun.com/ - -POM Project URL: https://jsr311.dev.java.net - -POM License: - CDDL License - - http://www.opensource.org/licenses/cddl1.php - --------------------------------------------------------------------------------- - -276. Group: javax.xml.bind Name: jaxb-api Version: 2.2.11 - -Manifest Project URL: http://www.oracle.com/ - -POM Project URL: http://jaxb.java.net/ - -POM License: CDDL 1.1 - https://glassfish.java.net/public/CDDL+GPL_1_1.html - -POM License: GPL2 w/ CPE - https://glassfish.java.net/public/CDDL+GPL_1_1.html - --------------------------------------------------------------------------------- - -277. Group: javax.xml.bind Name: jaxb-api Version: 2.2.2 - -POM Project URL: https://jaxb.dev.java.net/ - -POM License: CDDL 1.1 - https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html - -POM License: GPL2 w/ CPE - https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html - -Embedded license: - - **************************************** - -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - -1. Definitions. - - 1.1. Contributor. means each individual or entity that creates or -contributes to the creation of Modifications. - - 1.2. Contributor Version. means the combination of the Original -Software, prior Modifications used by a Contributor (if any), and the -Modifications made by that particular Contributor. - - 1.3. Covered Software. means (a) the Original Software, or (b) -Modifications, or (c) the combination of files containing Original -Software with files containing Modifications, in each case including -portions thereof. - - 1.4. Executable. means the Covered Software in any form other than -Source Code. - - 1.5. Initial Developer. means the individual or entity that first -makes Original Software available under this License. - - 1.6. Larger Work. means a work which combines Covered Software or -portions thereof with code not governed by the terms of this License. - - 1.7. License. means this document. - - 1.8. 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 the Source Code and Executable form of any -of the following: - - A. Any file that results from an addition to, deletion from or -modification of the contents of a file containing Original Software or -previous Modifications; - - B. Any new file that contains any part of the Original Software -or previous Modification; or - - C. Any new file that is contributed or otherwise made available -under the terms of this License. - - 1.10. Original Software. means the Source Code and Executable form of -computer software code that is originally released under this License. - - 1.11. 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.12. Source Code. means (a) the common form of computer software -code in which modifications are made and (b) associated documentation -included in or with such code. - - 1.13. You. (or .Your.) means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this -License. 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. License Grants. - - 2.1. The Initial Developer Grant. - - Conditioned upon Your compliance with Section 3.1 below and -subject to third party intellectual property claims, the Initial -Developer hereby grants You a world-wide, royalty-free, non-exclusive -license: - - (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 Software (or -portions thereof), with or without Modifications, and/or as part of a -Larger Work; and - - (b) under Patent Claims infringed by the making, using or -selling of Original Software, to make, have made, use, practice, sell, -and offer for sale, and/or otherwise dispose of the Original Software -(or portions thereof). - - (c) The licenses granted in Sections 2.1(a) and (b) are -effective on the date Initial Developer first distributes or otherwise -makes the Original Software available to a third party 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 Software, or (2) -for infringements caused by: (i) the modification of the Original -Software, or (ii) the combination of the Original Software with other -software or devices. - - 2.2. Contributor Grant. - - Conditioned upon Your compliance with Section 3.1 below and 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 Software 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 distributes or otherwise makes -the Modifications available to a third party. - - (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) 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 (3) under Patent -Claims infringed by Covered Software in the absence of Modifications -made by that Contributor. - -3. Distribution Obligations. - - 3.1. Availability of Source Code. - Any Covered Software that You distribute or otherwise make -available in Executable form must also be made available in Source Code -form and that Source Code form must be distributed only under the terms -of this License. You must include a copy of this License with every copy -of the Source Code form of the Covered Software You distribute or -otherwise make available. You must inform recipients of any such Covered -Software in Executable form as to how they can obtain such Covered -Software in Source Code form in a reasonable manner on or through a -medium customarily used for software exchange. - - 3.2. Modifications. - The Modifications that You create or to which You contribute are -governed by the terms of this License. You represent that You believe -Your Modifications are Your original creation(s) and/or You have -sufficient rights to grant the rights conveyed by this License. - - 3.3. Required Notices. - You must include a notice in each of Your Modifications that -identifies You as the Contributor of the Modification. You may not -remove or alter any copyright, patent or trademark notices contained -within the Covered Software, or any notices of licensing or any -descriptive text giving attribution to any Contributor or the Initial -Developer. - - 3.4. Application of Additional Terms. - You may not offer or impose any terms on any Covered Software in -Source Code form that alters or restricts the applicable version of this -License or the recipients. rights hereunder. You may choose to offer, -and to charge a fee for, warranty, support, indemnity or liability -obligations to one or more recipients of Covered Software. 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 that 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.5. Distribution of Executable Versions. - You may distribute the Executable form of the Covered Software -under the terms of this License or under the terms of 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 form does not attempt to limit or alter the -recipient.s rights in the Source Code form from the rights set forth in -this License. If You distribute the Covered Software in Executable form -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 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.6. Larger Works. - You may create a Larger Work by combining Covered Software 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 Software. - -4. Versions of the License. - - 4.1. New Versions. - Sun Microsystems, Inc. is the initial license steward and may -publish revised and/or new versions of this License from time to time. -Each version will be given a distinguishing version number. Except as -provided in Section 4.3, no one other than the license steward has the -right to modify this License. - - 4.2. Effect of New Versions. - You may always continue to use, distribute or otherwise make the -Covered Software available under the terms of the version of the License -under which You originally received the Covered Software. If the Initial -Developer includes a notice in the Original Software prohibiting it from -being distributed or otherwise made available under any subsequent -version of the License, You must distribute and make the Covered -Software available under the terms of the version of the License under -which You originally received the Covered Software. Otherwise, You may -also choose to use, distribute or otherwise make the Covered Software -available under the terms of any subsequent version of the License -published by the license steward. - - 4.3. Modified Versions. - When You are an Initial Developer and You want to create a new -license for Your Original Software, You may create and use a modified -version of this License if You: (a) rename the license and remove any -references to the name of the license steward (except to note that the -license differs from this License); and (b) otherwise make it clear that -the license contains terms which differ from this License. - -5. DISCLAIMER OF WARRANTY. - - COVERED SOFTWARE 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 SOFTWARE 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 -SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS -DISCLAIMER. - -6. TERMINATION. - - 6.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. Provisions -which, by their nature, must remain in effect beyond the termination of -this License shall survive. - - 6.2. If You assert a patent infringement claim (excluding -declaratory judgment actions) against Initial Developer or a Contributor -(the Initial Developer or Contributor against whom You assert such claim -is referred to as .Participant.) alleging that the Participant Software -(meaning the Contributor Version where the Participant is a Contributor -or the Original Software where the Participant is the Initial Developer) -directly or indirectly infringes any patent, then any and all rights -granted directly or indirectly to You by such Participant, the Initial -Developer (if the Initial Developer is not the Participant) and all -Contributors under Sections 2.1 and/or 2.2 of this License shall, upon -60 days notice from Participant terminate prospectively and -automatically at the expiration of such 60 day notice period, unless if -within such 60 day period You withdraw Your claim with respect to the -Participant Software against such Participant either unilaterally or -pursuant to a written agreement with Participant. - - 6.3. In the event of termination under Sections 6.1 or 6.2 above, -all end user licenses that have been validly granted by You or any -distributor hereunder prior to termination (excluding licenses granted -to You by any distributor) shall survive termination. - -7. 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 SOFTWARE, -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 LOST PROFITS, 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. - -8. U.S. GOVERNMENT END USERS. - - The Covered Software is a .commercial item,. as that term is defined -in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer -software. (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) -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 Software with only those rights set forth -herein. This U.S. Government Rights clause is in lieu of, and supersedes, -any other FAR, DFAR, or other clause or provision that addresses -Government rights in computer software under this License. - -9. 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 the -law of the jurisdiction specified in a notice contained within the -Original Software (except to the extent applicable law, if any, provides -otherwise), excluding such jurisdiction.s conflict-of-law provisions. -Any litigation relating to this License shall be subject to the -jurisdiction of the courts located in the jurisdiction and venue -specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for -compliance with the United States export administration regulations (and -the export control laws and regulation of any other countries) when You -use, distribute or otherwise make available any Covered Software. - -10. 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. - - NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND -DISTRIBUTION LICENSE (CDDL) - - The code released under the CDDL shall be governed by the laws of the -State of California (excluding conflict-of-law provisions). Any -litigation relating to this License shall be subject to the jurisdiction -of the Federal Courts of the Northern District of California and the -state courts of the State of California, with venue lying in Santa Clara -County, California. - - -The GNU General Public License (GPL) Version 2, June 1991 - - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, -Suite 330, Boston, MA 02111-1307 USA - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to -share and change it. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change free software--to -make sure the software is free for all its users. This General Public -License applies to most of the Free Software Foundation's software and -to any other program whose authors commit to using it. (Some other Free -Software Foundation software is covered by the GNU Library General -Public License instead.) You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. -Our General Public Licenses are designed to make sure that you have the -freedom to distribute copies of free software (and charge for this -service if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone -to deny you these rights or to ask you to surrender the rights. These -restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis -or for a fee, you must give the recipients all the rights that you have. -You must make sure that they, too, receive or can get the source code. -And you must show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software patents. -We wish to avoid the danger that redistributors of a free program will -individually obtain patent licenses, in effect making the program -proprietary. To prevent this, we have made it clear that any patent must -be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a -notice placed by the copyright holder saying it may be distributed under -the terms of this General Public License. The "Program", below, refers -to any such program or work, and a "work based on the Program" means -either the Program or any derivative work under copyright law: that is -to say, a work containing the Program or a portion of it, either -verbatim or with modifications and/or translated into another language. -(Hereinafter, translation is included without limitation in the term -"modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of running -the Program is not restricted, and the output from the Program is -covered only if its contents constitute a work based on the Program -(independent of having been made by running the Program). Whether that -is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's source -code as you receive it, in any medium, provided that you conspicuously -and appropriately publish on each copy an appropriate copyright notice -and disclaimer of warranty; keep intact all the notices that refer to -this License and to the absence of any warranty; and give any other -recipients of the Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of -it, thus forming a work based on the Program, and copy and distribute -such modifications or work under the terms of Section 1 above, provided -that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any part -thereof, to be licensed as a whole at no charge to all third parties -under the terms of this License. - - c) If the modified program normally reads commands interactively when -run, you must cause it, when started running for such interactive use in -the most ordinary way, to print or display an announcement including an -appropriate copyright notice and a notice that there is no warranty (or -else, saying that you provide a warranty) and that users may -redistribute the program under these conditions, and telling the user -how to view a copy of this License. (Exception: if the Program itself is -interactive but does not normally print such an announcement, your work -based on the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, and -can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based on -the Program, the distribution of the whole must be on the terms of this -License, whose permissions for other licensees extend to the entire -whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of a -storage or distribution medium does not bring the other work under the -scope of this License. - -3. You may copy and distribute the Program (or a work based on it, under -Section 2) in object code or executable form under the terms of Sections -1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections 1 and -2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three years, -to give any third party, for a charge no more than your cost of -physically performing source distribution, a complete machine-readable -copy of the corresponding source code, to be distributed under the terms -of Sections 1 and 2 above on a medium customarily used for software -interchange; or, - - c) Accompany it with the information you received as to the offer to -distribute corresponding source code. (This alternative is allowed only -for noncommercial distribution and only if you received the program in -object code or executable form with such an offer, in accord with -Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source code -means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to control -compilation and installation of the executable. However, as a special -exception, the source code distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies the -executable. - -If distribution of executable or object code is made by offering access -to copy from a designated place, then offering equivalent access to copy -the source code from the same place counts as distribution of the source -code, even though third parties are not compelled to copy the source -along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt otherwise -to copy, modify, sublicense or distribute the Program is void, and will -automatically terminate your rights under this License. However, parties -who have received copies, or rights, from you under this License will -not have their licenses terminated so long as such parties remain in -full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the Program), -you indicate your acceptance of this License to do so, and all its terms -and conditions for copying, distributing or modifying the Program or -works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further restrictions -on the recipients' exercise of the rights granted herein. You are not -responsible for enforcing compliance by third parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot distribute -so as to satisfy simultaneously your obligations under this License and -any other pertinent obligations, then as a consequence you may not -distribute the Program at all. For example, if a patent license would -not permit royalty-free redistribution of the Program by all those who -receive copies directly or indirectly through you, then the only way you -could satisfy both it and this License would be to refrain entirely from -distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is implemented -by public license practices. Many people have made generous -contributions to the wide range of software distributed through that -system in reliance on consistent application of that system; it is up to -the author/donor to decide if he or she is willing to distribute -software through any other system and a licensee cannot impose that -choice. - -This section is intended to make thoroughly clear what is believed to be -a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License may -add an explicit geographical distribution limitation excluding those -countries, so that distribution is permitted only in or among countries -not thus excluded. In such case, this License incorporates the -limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Program does not specify a version -number of this License, you may choose any version ever published by the -Free Software Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the -author to ask for permission. For software which is copyrighted by the -Free Software Foundation, write to the Free Software Foundation; we -sometimes make exceptions for this. Our decision will be guided by the -two goals of preserving the free status of all derivatives of our free -software and of promoting the sharing and reuse of software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE -ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. -SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY -SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR -DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL -DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM -(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED -INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF -THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR -OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - -To do so, attach the following notices to the program. It is safest to -attach them to the start of each source file to most effectively convey -the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - - Copyright (C) - - This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2 of the License, or (at your -option) any later version. - - This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -Public License for more details. - - You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software Foundation, -Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show -w'. This is free software, and you are welcome to redistribute it under -certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the -appropriate parts of the General Public License. Of course, the commands -you use may be called something other than `show w' and `show c'; they -could even be mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the -program `Gnomovision' (which makes passes at compilers) written by James -Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications -with the library. If this is what you want to do, use the GNU Library -General Public License instead of this License. - - -"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 - -Certain source files distributed by Sun Microsystems, Inc. are subject -to the following clarification and special exception to the GPL Version -2, but only where Sun has expressly included in the particular source -file's header the words - -"Sun designates this particular file as subject to the "Classpath" -exception as provided by Sun in the License file that accompanied this -code." - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License Version 2 cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent modules, -and to copy and distribute the resulting executable under terms of your -choice, provided that you also meet, for each linked independent module, -the terms and conditions of the license of that module.? An independent -module is a module which is not derived from or based on this library.? -If you modify this library, you may extend this exception to your -version of the library, but you are not obligated to do so.? If you do -not wish to do so, delete this exception statement from your version. - --------------------------------------------------------------------------------- - -278. Group: javax.xml.bind Name: jaxb-api Version: 2.3.0 - -Manifest Project URL: http://www.oracle.com/ - -POM License: CDDL 1.1 - https://oss.oracle.com/licenses/CDDL+GPL-1.1 - -POM License: GPL2 w/ CPE - https://oss.oracle.com/licenses/CDDL+GPL-1.1 - -Embedded license: - - **************************************** - -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1 - -1. Definitions. - - 1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. - - 1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. - - 1.4. "Executable" means the Covered Software in any form other than Source Code. - - 1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License. - - 1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. - - 1.7. "License" means this document. - - 1.8. "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 the Source Code and Executable form of any of the following: - - A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; - - B. Any new file that contains any part of the Original Software or previous Modification; or - - C. Any new file that is contributed or otherwise made available under the terms of this License. - - 1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License. - - 1.11. "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.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. - - 1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. License Grants. - - 2.1. The Initial Developer Grant. - - Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: - - (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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). - - (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party 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 Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. - - 2.2. Contributor Grant. - - Conditioned upon Your compliance with Section 3.1 below and 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 Software 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 distributes or otherwise makes the Modifications available to a third party. - - (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) 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 (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. - - 3.1. Availability of Source Code. - - Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. - - 3.2. Modifications. - - The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. - - 3.3. Required Notices. - - You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. - - 3.4. Application of Additional Terms. - - You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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.5. Distribution of Executable Versions. - - You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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.6. Larger Works. - - You may create a Larger Work by combining Covered Software 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 Software. - -4. Versions of the License. - - 4.1. New Versions. - - Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. - - 4.2. Effect of New Versions. - - You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. - - 4.3. Modified Versions. - - When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. - -5. DISCLAIMER OF WARRANTY. - - COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -6. TERMINATION. - - 6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. - - 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. - - 6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software 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. - - 6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. - -7. 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 SOFTWARE, 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. - -8. U.S. GOVERNMENT END USERS. - - The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. - -9. 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. - -10. 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. - ----------- -NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) -The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. - - - - -The GNU General Public License (GPL) Version 2, June 1991 - - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification follow. - - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. - - c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. - -If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - -5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. - -10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - - Copyright (C) - - This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. - - -"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 - -Certain source files distributed by Oracle are subject to the following clarification and special exception to the GPL Version 2, but only where Oracle has expressly included in the particular source file's header the words "Oracle designates this particular file as subject to the "Classpath" exception as provided by Oracle in the License file that accompanied this code." - -Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination. - -As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. - --------------------------------------------------------------------------------- - -279. Group: javax.xml.bind Name: jaxb-api Version: 2.3.1 - -Manifest Project URL: http://www.oracle.com/ - -POM License: CDDL 1.1 - https://oss.oracle.com/licenses/CDDL+GPL-1.1 - -POM License: GPL2 w/ CPE - https://oss.oracle.com/licenses/CDDL+GPL-1.1 - -Embedded license: - - **************************************** - -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1 - -1. Definitions. - - 1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. - - 1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. - - 1.4. "Executable" means the Covered Software in any form other than Source Code. - - 1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License. - - 1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. - - 1.7. "License" means this document. - - 1.8. "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 the Source Code and Executable form of any of the following: - - A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; - - B. Any new file that contains any part of the Original Software or previous Modification; or - - C. Any new file that is contributed or otherwise made available under the terms of this License. - - 1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License. - - 1.11. "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.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. - - 1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. 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. License Grants. - - 2.1. The Initial Developer Grant. - - Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: - - (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 Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). - - (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party 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 Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. - - 2.2. Contributor Grant. - - Conditioned upon Your compliance with Section 3.1 below and 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 Software 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 distributes or otherwise makes the Modifications available to a third party. - - (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) 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 (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. - - 3.1. Availability of Source Code. - - Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. - - 3.2. Modifications. - - The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. - - 3.3. Required Notices. - - You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. - - 3.4. Application of Additional Terms. - - You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. 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 that 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.5. Distribution of Executable Versions. - - You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of 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 form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form 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 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.6. Larger Works. - - You may create a Larger Work by combining Covered Software 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 Software. - -4. Versions of the License. - - 4.1. New Versions. - - Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. - - 4.2. Effect of New Versions. - - You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. - - 4.3. Modified Versions. - - When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. - -5. DISCLAIMER OF WARRANTY. - - COVERED SOFTWARE 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 SOFTWARE 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 SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -6. TERMINATION. - - 6.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. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. - - 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. - - 6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software 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. - - 6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. - -7. 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 SOFTWARE, 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. - -8. U.S. GOVERNMENT END USERS. - - The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. - -9. 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 the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, 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. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. - -10. 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. - ----------- -NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) -The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. - - - - -The GNU General Public License (GPL) Version 2, June 1991 - - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification follow. - - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. - - c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. - -If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - -5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. - -10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - - Copyright (C) - - This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. - - -"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 - -Certain source files distributed by Oracle are subject to the following clarification and special exception to the GPL Version 2, but only where Oracle has expressly included in the particular source file's header the words "Oracle designates this particular file as subject to the "Classpath" exception as provided by Oracle in the License file that accompanied this code." - -Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination. - -As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. - --------------------------------------------------------------------------------- - -280. Group: javax.xml.stream Name: stax-api Version: 1.0-2 - -POM License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - http://www.sun.com/cddl/cddl.html - -POM License: GNU General Public Library - http://www.gnu.org/licenses/gpl.txt - --------------------------------------------------------------------------------- - -281. Group: joda-time Name: joda-time Version: 2.10.14 - -Project URL: https://www.joda.org/joda-time/ - -Manifest License: Apache 2.0 (Not packaged) - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -============================================================================= -= NOTICE file corresponding to section 4d of the Apache License Version 2.0 = -============================================================================= -This product includes software developed by -Joda.org (https://www.joda.org/). - --------------------------------------------------------------------------------- - -282. Group: joda-time Name: joda-time Version: 2.11.1 - -Project URL: https://www.joda.org/joda-time/ - -Manifest License: Apache 2.0 (Not packaged) - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -============================================================================= -= NOTICE file corresponding to section 4d of the Apache License Version 2.0 = -============================================================================= -This product includes software developed by -Joda.org (https://www.joda.org/). - --------------------------------------------------------------------------------- - -283. Group: joda-time Name: joda-time Version: 2.12.2 - -Project URL: https://www.joda.org/joda-time/ - -Manifest License: Apache 2.0 (Not packaged) - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -============================================================================= -= NOTICE file corresponding to section 4d of the Apache License Version 2.0 = -============================================================================= -This product includes software developed by -Joda.org (https://www.joda.org/). - --------------------------------------------------------------------------------- - -284. Group: joda-time Name: joda-time Version: 2.12.5 - -Project URL: https://www.joda.org/joda-time/ - -Manifest License: Apache 2.0 (Not packaged) - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -============================================================================= -= NOTICE file corresponding to section 4d of the Apache License Version 2.0 = -============================================================================= -This product includes software developed by -Joda.org (https://www.joda.org/). - --------------------------------------------------------------------------------- - -285. Group: joda-time Name: joda-time Version: 2.8.1 - -Project URL: http://www.joda.org/joda-time/ - -Manifest License: Apache 2.0 (Not packaged) - -POM License: Apache 2 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -============================================================================= -= NOTICE file corresponding to section 4d of the Apache License Version 2.0 = -============================================================================= -This product includes software developed by -Joda.org (http://www.joda.org/). - --------------------------------------------------------------------------------- - -286. Group: net.bytebuddy Name: byte-buddy Version: 1.14.4 - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - -This product bundles ASM 9.5, which is available under a "3-clause BSD" -license. For details, see licenses/ASM. For more information visit ${asm.url}. - -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - - **************************************** - -Copyright 2014 - Present Rafael Winterhalter - -Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - --------------------------------------------------------------------------------- - -287. Group: net.java.dev.jna Name: jna Version: 5.5.0 - -POM Project URL: https://github.com/java-native-access/jna - -POM License: Apache License v2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: LGPL, version 2.1 - http://www.gnu.org/licenses/licenses.html - -Embedded license: - - **************************************** - -Java Native Access project (JNA) is dual-licensed under 2 -alternative Open Source/Free licenses: LGPL 2.1 or later and -Apache License 2.0. (starting with JNA version 4.0.0). - -You can freely decide which license you want to apply to -the project. - -You may obtain a copy of the LGPL License at: - -http://www.gnu.org/licenses/licenses.html - -A copy is also included in the downloadable source code package -containing JNA, in file "LGPL2.1", under the same directory -as this file. - -You may obtain a copy of the Apache License at: - -http://www.apache.org/licenses/ - -A copy is also included in the downloadable source code package -containing JNA, in file "AL2.0", under the same directory -as this file. - --------------------------------------------------------------------------------- - -288. Group: net.jpountz.lz4 Name: lz4 Version: 1.3.0 - -POM Project URL: https://github.com/jpountz/lz4-java - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -289. Group: net.sf.jopt-simple Name: jopt-simple Version: 5.0.4 - -POM Project URL: http://jopt-simple.github.io/jopt-simple - -POM License: The MIT License - http://www.opensource.org/licenses/mit-license.php - --------------------------------------------------------------------------------- - -290. Group: net.sourceforge.argparse4j Name: argparse4j Version: 0.7.0 - -POM Project URL: http://argparse4j.github.io - -POM License: MIT - https://raw.github.com/tatsuhiro-t/argparse4j/master/LICENSE.txt - --------------------------------------------------------------------------------- - -291. Group: org.abego.treelayout Name: org.abego.treelayout.core Version: 1.0.3 - -Manifest Project URL: http://abego-software.de - -POM Project URL: http://treelayout.sourceforge.net - -POM License: BSD 3-Clause "New" or "Revised" License (BSD-3-Clause) - http://www.abego-software.de/legal/apl-v10.html - --------------------------------------------------------------------------------- - -292. Group: org.antlr Name: ST4 Version: 4.3.3 - -POM License: The BSD License - http://www.antlr.org/license.html - --------------------------------------------------------------------------------- - -293. Group: org.antlr Name: antlr-runtime Version: 3.5.3 - -POM Project URL: http://www.antlr.org - -POM License: BSD licence - http://antlr.org/license.html - --------------------------------------------------------------------------------- - -294. Group: org.antlr Name: antlr4 Version: 4.10.1 - -POM Project URL: http://www.antlr.org - -POM License: The BSD License - http://www.antlr.org/license.html - --------------------------------------------------------------------------------- - -295. Group: org.antlr Name: antlr4-runtime Version: 4.10.1 - -Manifest Project URL: http://www.antlr.org - -POM License: The BSD License - http://www.antlr.org/license.html - --------------------------------------------------------------------------------- - -296. Group: org.apache.avro Name: avro Version: 1.11.3 - -Manifest Project URL: https://www.apache.org/ - -POM Project URL: https://avro.apache.org - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - - -Apache Avro -Copyright 2009-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - - --------------------------------------------------------------------------------- - -297. Group: org.apache.commons Name: commons-collections4 Version: 4.4 - -Project URL: https://commons.apache.org/proper/commons-collections/ - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Commons Collections -Copyright 2001-2019 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - --------------------------------------------------------------------------------- - -298. Group: org.apache.commons Name: commons-compress Version: 1.22 - -Project URL: https://commons.apache.org/proper/commons-compress/ - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Commons Compress -Copyright 2002-2022 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - ---- - -The files in the package org.apache.commons.compress.archivers.sevenz -were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/), -which has been placed in the public domain: - -"LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html) - ---- - -The test file lbzip2_32767.bz2 has been copied from libbzip2's source -repository: - -This program, "bzip2", the associated library "libbzip2", and all -documentation, are copyright (C) 1996-2019 Julian R Seward. All -rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - -3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - -4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Julian Seward, jseward@acm.org - --------------------------------------------------------------------------------- - -299. Group: org.apache.commons Name: commons-compress Version: 1.24.0 - -Project URL: https://commons.apache.org/proper/commons-compress/ - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Commons Compress -Copyright 2002-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - ---- - -The files in the package org.apache.commons.compress.archivers.sevenz -were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/), -which has been placed in the public domain: - -"LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html) - ---- - -The test file lbzip2_32767.bz2 has been copied from libbzip2's source -repository: - -This program, "bzip2", the associated library "libbzip2", and all -documentation, are copyright (C) 1996-2019 Julian R Seward. All -rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - -3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - -4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Julian Seward, jseward@acm.org - --------------------------------------------------------------------------------- - -300. Group: org.apache.commons Name: commons-configuration2 Version: 2.8.0 - -Project URL: https://commons.apache.org/proper/commons-configuration/ - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Commons Configuration -Copyright 2001-2022 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - --------------------------------------------------------------------------------- - -301. Group: org.apache.commons Name: commons-lang3 Version: 3.13.0 - -Project URL: https://commons.apache.org/proper/commons-lang/ - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Commons Lang -Copyright 2001-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -302. Group: org.apache.commons Name: commons-math3 Version: 3.1.1 - -Project URL: http://commons.apache.org/math/ - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -APACHE COMMONS MATH DERIVATIVE WORKS: - -The Apache commons-math library includes a number of subcomponents -whose implementation is derived from original sources written -in C or Fortran. License terms of the original sources -are reproduced below. - -=============================================================================== -For the lmder, lmpar and qrsolv Fortran routine from minpack and translated in -the LevenbergMarquardtOptimizer class in package -org.apache.commons.math3.optimization.general -Original source copyright and license statement: - -Minpack Copyright Notice (1999) University of Chicago. All rights reserved - -Redistribution and use in source and binary forms, with or -without modification, are permitted provided that the -following conditions are met: - -1. Redistributions of source code must retain the above -copyright notice, this list of conditions and the following -disclaimer. - -2. Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following -disclaimer in the documentation and/or other materials -provided with the distribution. - -3. The end-user documentation included with the -redistribution, if any, must include the following -acknowledgment: - - "This product includes software developed by the - University of Chicago, as Operator of Argonne National - Laboratory. - -Alternately, this acknowledgment may appear in the software -itself, if and wherever such third-party acknowledgments -normally appear. - -4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" -WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE -UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND -THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE -OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY -OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR -USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF -THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) -DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION -UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL -BE CORRECTED. - -5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT -HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF -ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, -INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF -ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF -PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER -SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT -(INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, -EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE -POSSIBILITY OF SUCH LOSS OR DAMAGES. -=============================================================================== - -Copyright and license statement for the odex Fortran routine developed by -E. Hairer and G. Wanner and translated in GraggBulirschStoerIntegrator class -in package org.apache.commons.math3.ode.nonstiff: - - -Copyright (c) 2004, Ernst Hairer - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -- Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -=============================================================================== - -Copyright and license statement for the original lapack fortran routines -translated in EigenDecompositionImpl class in package -org.apache.commons.math3.linear: - -Copyright (c) 1992-2008 The University of Tennessee. All rights reserved. - -$COPYRIGHT$ - -Additional copyrights may follow - -$HEADER$ - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer listed - in this license in the documentation and/or other materials - provided with the distribution. - -- Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -=============================================================================== - -Copyright and license statement for the original Mersenne twister C -routines translated in MersenneTwister class in package -org.apache.commons.math3.random: - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -=============================================================================== - -The class "org.apache.commons.math3.exception.util.LocalizedFormatsTest" is -an adapted version of "OrekitMessagesTest" test class for the Orekit library -The "org.apache.commons.math3.analysis.interpolation.HermiteInterpolator" -has been imported from the Orekit space flight dynamics library. - -Th Orekit library is described at: - https://www.orekit.org/forge/projects/orekit -The original files are distributed under the terms of the Apache 2 license -which is: Copyright 2010 CS Communication & Systèmes - - **************************************** - -Apache Commons Math -Copyright 2001-2012 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - -=============================================================================== - -The BracketFinder (package org.apache.commons.math3.optimization.univariate) -and PowellOptimizer (package org.apache.commons.math3.optimization.general) -classes are based on the Python code in module "optimize.py" (version 0.5) -developed by Travis E. Oliphant for the SciPy library (http://www.scipy.org/) -Copyright © 2003-2009 SciPy Developers. -=============================================================================== - -The LinearConstraint, LinearObjectiveFunction, LinearOptimizer, -RelationShip, SimplexSolver and SimplexTableau classes in package -org.apache.commons.math3.optimization.linear include software developed by -Benjamin McCann (http://www.benmccann.com) and distributed with -the following copyright: Copyright 2009 Google Inc. -=============================================================================== - -This product includes software developed by the -University of Chicago, as Operator of Argonne National -Laboratory. -The LevenbergMarquardtOptimizer class in package -org.apache.commons.math3.optimization.general includes software -translated from the lmder, lmpar and qrsolv Fortran routines -from the Minpack package -Minpack Copyright Notice (1999) University of Chicago. All rights reserved -=============================================================================== - -The GraggBulirschStoerIntegrator class in package -org.apache.commons.math3.ode.nonstiff includes software translated -from the odex Fortran routine developed by E. Hairer and G. Wanner. -Original source copyright: -Copyright (c) 2004, Ernst Hairer -=============================================================================== - -The EigenDecompositionImpl class in package -org.apache.commons.math3.linear includes software translated -from some LAPACK Fortran routines. Original source copyright: -Copyright (c) 1992-2008 The University of Tennessee. All rights reserved. -=============================================================================== - -The MersenneTwister class in package org.apache.commons.math3.random -includes software translated from the 2002-01-26 version of -the Mersenne-Twister generator written in C by Makoto Matsumoto and Takuji -Nishimura. Original source copyright: -Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, -All rights reserved -=============================================================================== - -The LocalizedFormatsTest class in the unit tests is an adapted version of -the OrekitMessagesTest class from the orekit library distributed under the -terms of the Apache 2 licence. Original source copyright: -Copyright 2010 CS Systèmes d'Information -=============================================================================== - -The HermiteInterpolator class and its corresponding test have been imported from -the orekit library distributed under the terms of the Apache 2 licence. Original -source copyright: -Copyright 2010-2012 CS Systèmes d'Information -=============================================================================== - -The creation of the package "o.a.c.m.analysis.integration.gauss" was inspired -by an original code donated by Sébastien Brisard. -=============================================================================== - - -The complete text of licenses and disclaimers associated with the the original -sources enumerated above at the time of code translation are in the LICENSE.txt -file. - --------------------------------------------------------------------------------- - -303. Group: org.apache.commons Name: commons-text Version: 1.10.0 - -Project URL: https://commons.apache.org/proper/commons-text - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Commons Text -Copyright 2014-2022 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -304. Group: org.apache.curator Name: curator-client Version: 5.2.0 - -Manifest Project URL: http://www.apache.org/ - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - - -Curator Client -Copyright 2011-2021 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - - --------------------------------------------------------------------------------- - -305. Group: org.apache.curator Name: curator-framework Version: 5.2.0 - -Manifest Project URL: http://www.apache.org/ - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - - -Curator Framework -Copyright 2011-2021 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - - --------------------------------------------------------------------------------- - -306. Group: org.apache.curator Name: curator-recipes Version: 5.2.0 - -Manifest Project URL: http://www.apache.org/ - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - - -Curator Recipes -Copyright 2011-2021 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + **************************************** +============================================================================= += NOTICE file corresponding to section 4d of the Apache License Version 2.0 = +============================================================================= +This product includes software developed by +Joda.org (https://www.joda.org/). -------------------------------------------------------------------------------- -307. Group: org.apache.directory.api Name: api-asn1-api Version: 2.1.4 - -Manifest Project URL: https://www.apache.org/ +254. Group: net.bytebuddy Name: byte-buddy Version: 1.14.4 -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** +This product bundles ASM 9.5, which is available under a "3-clause BSD" +license. For details, see licenses/ASM. For more information visit ${asm.url}. - Apache License +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -24356,274 +18654,132 @@ Embedded license: END OF TERMS AND CONDITIONS - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. **************************************** +Copyright 2014 - Present Rafael Winterhalter -Apache Directory API ASN.1 API -Copyright 2003-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. -------------------------------------------------------------------------------- -308. Group: org.apache.directory.api Name: api-asn1-ber Version: 2.1.4 +255. Group: net.java.dev.jna Name: jna Version: 5.5.0 -Manifest Project URL: https://www.apache.org/ +POM Project URL: https://github.com/java-native-access/jna -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License v2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +POM License: LGPL, version 2.1 - http://www.gnu.org/licenses/licenses.html Embedded license: **************************************** +Java Native Access project (JNA) is dual-licensed under 2 +alternative Open Source/Free licenses: LGPL 2.1 or later and +Apache License 2.0. (starting with JNA version 4.0.0). - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +You can freely decide which license you want to apply to +the project. - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +You may obtain a copy of the LGPL License at: - 1. Definitions. +http://www.gnu.org/licenses/licenses.html - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +A copy is also included in the downloadable source code package +containing JNA, in file "LGPL2.1", under the same directory +as this file. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +You may obtain a copy of the Apache License at: - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +http://www.apache.org/licenses/ - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +A copy is also included in the downloadable source code package +containing JNA, in file "AL2.0", under the same directory +as this file. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +-------------------------------------------------------------------------------- - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +256. Group: net.minidev Name: accessors-smart Version: 2.5.0 - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +Project URL: https://urielch.github.io/ - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +-------------------------------------------------------------------------------- - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +257. Group: net.minidev Name: json-smart Version: 2.5.0 - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +Project URL: https://urielch.github.io/ - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +-------------------------------------------------------------------------------- - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +258. Group: net.sf.jopt-simple Name: jopt-simple Version: 5.0.4 - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +POM Project URL: http://jopt-simple.github.io/jopt-simple - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +POM License: The MIT License - http://www.opensource.org/licenses/mit-license.php - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +-------------------------------------------------------------------------------- - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +259. Group: org.abego.treelayout Name: org.abego.treelayout.core Version: 1.0.3 - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. +Manifest Project URL: http://abego-software.de - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +POM Project URL: http://treelayout.sourceforge.net - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +POM License: BSD 3-Clause "New" or "Revised" License (BSD-3-Clause) - http://www.abego-software.de/legal/apl-v10.html - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +-------------------------------------------------------------------------------- - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +260. Group: org.antlr Name: ST4 Version: 4.3.3 - END OF TERMS AND CONDITIONS +POM License: The BSD License - http://www.antlr.org/license.html - APPENDIX: How to apply the Apache License to your work. +-------------------------------------------------------------------------------- - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +261. Group: org.antlr Name: antlr-runtime Version: 3.5.3 - Copyright [yyyy] [name of copyright owner] +POM Project URL: http://www.antlr.org - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +POM License: BSD licence - http://antlr.org/license.html - http://www.apache.org/licenses/LICENSE-2.0 +-------------------------------------------------------------------------------- - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +262. Group: org.antlr Name: antlr4 Version: 4.10.1 - **************************************** +POM Project URL: http://www.antlr.org +POM License: The BSD License - http://www.antlr.org/license.html -Apache Directory API ASN.1 BER -Copyright 2003-2023 The Apache Software Foundation +-------------------------------------------------------------------------------- -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +263. Group: org.antlr Name: antlr4-runtime Version: 4.10.1 +Manifest Project URL: http://www.antlr.org +POM License: The BSD License - http://www.antlr.org/license.html -------------------------------------------------------------------------------- -309. Group: org.apache.directory.api Name: api-i18n Version: 2.1.4 +264. Group: org.apache.avro Name: avro Version: 1.11.3 Manifest Project URL: https://www.apache.org/ +POM Project URL: https://avro.apache.org + POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -24836,8 +18992,8 @@ Embedded license: **************************************** -Apache Directory LDAP API I18n -Copyright 2003-2023 The Apache Software Foundation +Apache Avro +Copyright 2009-2023 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -24846,16 +19002,238 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -310. Group: org.apache.directory.api Name: api-ldap-model Version: 2.1.4 +265. Group: org.apache.commons Name: commons-collections4 Version: 4.4 -Manifest Project URL: https://www.apache.org/ +Project URL: https://commons.apache.org/proper/commons-collections/ -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + **************************************** + +Apache Commons Collections +Copyright 2001-2019 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +-------------------------------------------------------------------------------- + +266. Group: org.apache.commons Name: commons-compress Version: 1.26.0 + +Project URL: https://commons.apache.org/proper/commons-compress/ + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** Apache License Version 2.0, January 2004 @@ -25058,47 +19436,20 @@ Embedded license: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------- - ANTLR 2 License - -ANTLR 2 License - -We reserve no legal rights to the ANTLR--it is fully in the public domain. An -individual or company may do whatever they wish with source code distributed -with ANTLR or the code generated by ANTLR, including the incorporation of -ANTLR, or its output, into commerical software. - -We encourage users to develop software with ANTLR. However, we do ask that -credit is given to us for developing ANTLR. By "credit", we mean that if you -use ANTLR or incorporate any source code into one of your programs (commercial -product, research project, or otherwise) that you acknowledge this fact -somewhere in the documentation, research report, etc... If you like ANTLR -and have developed a nice tool with the output, please mention that you -developed it using ANTLR. In addition, we ask that the headers remain intact -in our source code. As long as these guidelines are kept, we expect to -continue enhancing this system and expect to make other tools available as -they are completed. - **************************************** - -Apache Directory LDAP API Model -Copyright 2003-2023 The Apache Software Foundation +Apache Commons Compress +Copyright 2002-2024 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - - -This software includes code generated by ANTLR 2. - +The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -311. Group: org.apache.directory.api Name: api-util Version: 2.1.4 +267. Group: org.apache.commons Name: commons-configuration2 Version: 2.11.0 -Manifest Project URL: https://www.apache.org/ +Project URL: https://commons.apache.org/proper/commons-configuration/ POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -25311,20 +19662,19 @@ Embedded license: **************************************** - -Apache Directory LDAP API Utilities -Copyright 2003-2023 The Apache Software Foundation +Apache Commons Configuration +Copyright 2001-2024 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - +The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -312. Group: org.apache.hadoop Name: hadoop-annotations Version: 3.3.6 +268. Group: org.apache.commons Name: commons-lang3 Version: 3.14.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Project URL: https://commons.apache.org/proper/commons-lang/ + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -25533,122 +19883,26 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses/ for text of these licenses. - - -Apache Software Foundation License 2.0 --------------------------------------- - -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java - - -BSD 2-Clause ------------- - -hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.{c|h} -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h - - -BSD 3-Clause ------------- - -hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* -hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc -hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h -hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/protobuf/protobuf/cpp_helpers.h -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/gmock-1.7.0/*/*.{cc|h} -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-v4.1.1.min.js - - -MIT License ------------ - -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/node_modules/.bin/r.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.10.18/* -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL - -uriparser2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/uriparser2) -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch] - -Boost Software License, Version 1.0 -------------- -asio-1.10.2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2) -rapidxml-1.13 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/rapidxml-1.13) -tr2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/tr2) - -Public Domain -------------- -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/json-bignum.js - **************************************** -Apache Hadoop -Copyright 2006 and onwards The Apache Software Foundation. +Apache Commons Lang +Copyright 2001-2023 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Export Control Notice ---------------------- - -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic software: - -This software uses the SSL libraries from the Jetty project written -by mortbay.org. -Hadoop Yarn Server Web Proxy uses the BouncyCastle Java -cryptography APIs written by the Legion of the Bouncy Castle Inc. +The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -313. Group: org.apache.hadoop Name: hadoop-auth Version: 3.3.6 +269. Group: org.apache.commons Name: commons-math3 Version: 3.6.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Project URL: http://commons.apache.org/proper/commons-math/ + +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -25851,114 +20105,279 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses/ for text of these licenses. +Apache Commons Math includes the following code provided to the ASF under the +Apache License 2.0: + + - The inverse error function implementation in the Erf class is based on CUDA + code developed by Mike Giles, Oxford-Man Institute of Quantitative Finance, + and published in GPU Computing Gems, volume 2, 2010 (grant received on + March 23th 2013) + - The LinearConstraint, LinearObjectiveFunction, LinearOptimizer, + RelationShip, SimplexSolver and SimplexTableau classes in package + org.apache.commons.math3.optimization.linear include software developed by + Benjamin McCann (http://www.benmccann.com) and distributed with + the following copyright: Copyright 2009 Google Inc. (grant received on + March 16th 2009) + - The class "org.apache.commons.math3.exception.util.LocalizedFormatsTest" which + is an adapted version of "OrekitMessagesTest" test class for the Orekit library + - The "org.apache.commons.math3.analysis.interpolation.HermiteInterpolator" + has been imported from the Orekit space flight dynamics library. -Apache Software Foundation License 2.0 --------------------------------------- +=============================================================================== + -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java +APACHE COMMONS MATH DERIVATIVE WORKS: -BSD 2-Clause ------------- +The Apache commons-math library includes a number of subcomponents +whose implementation is derived from original sources written +in C or Fortran. License terms of the original sources +are reproduced below. -hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.{c|h} -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h +=============================================================================== +For the lmder, lmpar and qrsolv Fortran routine from minpack and translated in +the LevenbergMarquardtOptimizer class in package +org.apache.commons.math3.optimization.general +Original source copyright and license statement: +Minpack Copyright Notice (1999) University of Chicago. All rights reserved -BSD 3-Clause ------------- +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the +following conditions are met: -hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* -hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc -hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h -hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/protobuf/protobuf/cpp_helpers.h -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/gmock-1.7.0/*/*.{cc|h} -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-v4.1.1.min.js +1. Redistributions of source code must retain the above +copyright notice, this list of conditions and the following +disclaimer. +2. Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following +disclaimer in the documentation and/or other materials +provided with the distribution. -MIT License ------------ +3. The end-user documentation included with the +redistribution, if any, must include the following +acknowledgment: -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/node_modules/.bin/r.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.10.18/* -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + "This product includes software developed by the + University of Chicago, as Operator of Argonne National + Laboratory. -uriparser2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/uriparser2) -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch] +Alternately, this acknowledgment may appear in the software +itself, if and wherever such third-party acknowledgments +normally appear. -Boost Software License, Version 1.0 -------------- -asio-1.10.2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2) -rapidxml-1.13 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/rapidxml-1.13) -tr2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/tr2) +4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" +WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE +UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND +THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE +OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY +OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR +USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF +THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) +DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION +UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL +BE CORRECTED. -Public Domain -------------- -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/json-bignum.js +5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT +HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF +ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, +INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF +ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF +PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER +SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT +(INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, +EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE +POSSIBILITY OF SUCH LOSS OR DAMAGES. +=============================================================================== - **************************************** +Copyright and license statement for the odex Fortran routine developed by +E. Hairer and G. Wanner and translated in GraggBulirschStoerIntegrator class +in package org.apache.commons.math3.ode.nonstiff: -Apache Hadoop -Copyright 2006 and onwards The Apache Software Foundation. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +Copyright (c) 2004, Ernst Hairer -Export Control Notice ---------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. -The following provides more details on the included cryptographic software: +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +=============================================================================== -This software uses the SSL libraries from the Jetty project written -by mortbay.org. -Hadoop Yarn Server Web Proxy uses the BouncyCastle Java -cryptography APIs written by the Legion of the Bouncy Castle Inc. +Copyright and license statement for the original Mersenne twister C +routines translated in MersenneTwister class in package +org.apache.commons.math3.random: + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=============================================================================== + +The initial code for shuffling an array (originally in class +"org.apache.commons.math3.random.RandomDataGenerator", now replaced by +a method in class "org.apache.commons.math3.util.MathArrays") was +inspired from the algorithm description provided in +"Algorithms", by Ian Craw and John Pulham (University of Aberdeen 1999). +The textbook (containing a proof that the shuffle is uniformly random) is +available here: + http://citeseerx.ist.psu.edu/viewdoc/download;?doi=10.1.1.173.1898&rep=rep1&type=pdf + +=============================================================================== +License statement for the direction numbers in the resource files for Sobol sequences. + +----------------------------------------------------------------------------- +Licence pertaining to sobol.cc and the accompanying sets of direction numbers + +----------------------------------------------------------------------------- +Copyright (c) 2008, Frances Y. Kuo and Stephen Joe +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the copyright holders nor the names of the + University of New South Wales and the University of Waikato + and its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +=============================================================================== + +The initial commit of package "org.apache.commons.math3.ml.neuralnet" is +an adapted version of code developed in the context of the Data Processing +and Analysis Consortium (DPAC) of the "Gaia" project of the European Space +Agency (ESA). +=============================================================================== + +The initial commit of the class "org.apache.commons.math3.special.BesselJ" is +an adapted version of code translated from the netlib Fortran program, rjbesl +http://www.netlib.org/specfun/rjbesl by R.J. Cody at Argonne National +Laboratory (USA). There is no license or copyright statement included with the +original Fortran sources. +=============================================================================== + + +The BracketFinder (package org.apache.commons.math3.optimization.univariate) +and PowellOptimizer (package org.apache.commons.math3.optimization.general) +classes are based on the Python code in module "optimize.py" (version 0.5) +developed by Travis E. Oliphant for the SciPy library (http://www.scipy.org/) +Copyright © 2003-2009 SciPy Developers. + +SciPy license +Copyright © 2001, 2002 Enthought, Inc. +All rights reserved. + +Copyright © 2003-2013 SciPy Developers. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Enthought nor the names of the SciPy Developers may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +=============================================================================== + + + **************************************** + +Apache Commons Math +Copyright 2001-2016 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +This product includes software developed for Orekit by +CS Systèmes d'Information (http://www.c-s.fr/) +Copyright 2010-2012 CS Systèmes d'Information -------------------------------------------------------------------------------- -314. Group: org.apache.hadoop Name: hadoop-common Version: 3.3.6 +270. Group: org.apache.commons Name: commons-text Version: 1.10.0 + +Project URL: https://commons.apache.org/proper/commons-text POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -26169,116 +20588,21 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses/ for text of these licenses. - - -Apache Software Foundation License 2.0 --------------------------------------- - -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java - - -BSD 2-Clause ------------- - -hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.{c|h} -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h - - -BSD 3-Clause ------------- - -hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* -hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc -hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h -hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/protobuf/protobuf/cpp_helpers.h -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/gmock-1.7.0/*/*.{cc|h} -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-v4.1.1.min.js - - -MIT License ------------ - -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/node_modules/.bin/r.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.10.18/* -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL - -uriparser2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/uriparser2) -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch] - -Boost Software License, Version 1.0 -------------- -asio-1.10.2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2) -rapidxml-1.13 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/rapidxml-1.13) -tr2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/tr2) - -Public Domain -------------- -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/json-bignum.js - **************************************** -Apache Hadoop -Copyright 2006 and onwards The Apache Software Foundation. +Apache Commons Text +Copyright 2014-2022 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Export Control Notice ---------------------- - -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic software: - -This software uses the SSL libraries from the Jetty project written -by mortbay.org. -Hadoop Yarn Server Web Proxy uses the BouncyCastle Java -cryptography APIs written by the Legion of the Bouncy Castle Inc. +The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -315. Group: org.apache.hadoop Name: hadoop-mapreduce-client-core Version: 3.3.6 +271. Group: org.apache.commons Name: commons-text Version: 1.11.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Project URL: https://commons.apache.org/proper/commons-text + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -26487,116 +20811,21 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses/ for text of these licenses. - - -Apache Software Foundation License 2.0 --------------------------------------- - -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java - - -BSD 2-Clause ------------- - -hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.{c|h} -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h - - -BSD 3-Clause ------------- - -hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* -hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc -hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h -hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/protobuf/protobuf/cpp_helpers.h -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/gmock-1.7.0/*/*.{cc|h} -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-v4.1.1.min.js - - -MIT License ------------ - -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/node_modules/.bin/r.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.10.18/* -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL - -uriparser2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/uriparser2) -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch] - -Boost Software License, Version 1.0 -------------- -asio-1.10.2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2) -rapidxml-1.13 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/rapidxml-1.13) -tr2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/tr2) - -Public Domain -------------- -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/json-bignum.js - **************************************** -Apache Hadoop -Copyright 2006 and onwards The Apache Software Foundation. +Apache Commons Text +Copyright 2014-2023 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Export Control Notice ---------------------- - -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic software: - -This software uses the SSL libraries from the Jetty project written -by mortbay.org. -Hadoop Yarn Server Web Proxy uses the BouncyCastle Java -cryptography APIs written by the Legion of the Bouncy Castle Inc. +The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -316. Group: org.apache.hadoop Name: hadoop-yarn-api Version: 3.3.6 +272. Group: org.apache.commons Name: commons-text Version: 1.12.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Project URL: https://commons.apache.org/proper/commons-text + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -26805,117 +21034,24 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses/ for text of these licenses. - - -Apache Software Foundation License 2.0 --------------------------------------- - -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java - - -BSD 2-Clause ------------- - -hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.{c|h} -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h - - -BSD 3-Clause ------------- - -hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* -hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc -hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h -hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/protobuf/protobuf/cpp_helpers.h -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/gmock-1.7.0/*/*.{cc|h} -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-v4.1.1.min.js - - -MIT License ------------ - -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/node_modules/.bin/r.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.10.18/* -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL - -uriparser2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/uriparser2) -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch] - -Boost Software License, Version 1.0 -------------- -asio-1.10.2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2) -rapidxml-1.13 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/rapidxml-1.13) -tr2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/tr2) - -Public Domain -------------- -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/json-bignum.js - **************************************** -Apache Hadoop -Copyright 2006 and onwards The Apache Software Foundation. +Apache Commons Text +Copyright 2014-2024 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Export Control Notice ---------------------- - -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic software: - -This software uses the SSL libraries from the Jetty project written -by mortbay.org. -Hadoop Yarn Server Web Proxy uses the BouncyCastle Java -cryptography APIs written by the Legion of the Bouncy Castle Inc. +The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -317. Group: org.apache.hadoop Name: hadoop-yarn-client Version: 3.3.6 +273. Group: org.apache.curator Name: curator-client Version: 5.2.0 + +Manifest Project URL: http://www.apache.org/ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + Embedded license: **************************************** @@ -27123,117 +21259,27 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses/ for text of these licenses. - - -Apache Software Foundation License 2.0 --------------------------------------- - -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java - - -BSD 2-Clause ------------- - -hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.{c|h} -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h - - -BSD 3-Clause ------------- - -hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* -hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc -hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h -hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/protobuf/protobuf/cpp_helpers.h -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/gmock-1.7.0/*/*.{cc|h} -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-v4.1.1.min.js - - -MIT License ------------ - -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/node_modules/.bin/r.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.10.18/* -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL - -uriparser2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/uriparser2) -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch] - -Boost Software License, Version 1.0 -------------- -asio-1.10.2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2) -rapidxml-1.13 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/rapidxml-1.13) -tr2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/tr2) - -Public Domain -------------- -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/json-bignum.js - **************************************** -Apache Hadoop -Copyright 2006 and onwards The Apache Software Foundation. + +Curator Client +Copyright 2011-2021 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). -Export Control Notice ---------------------- - -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic software: - -This software uses the SSL libraries from the Jetty project written -by mortbay.org. -Hadoop Yarn Server Web Proxy uses the BouncyCastle Java -cryptography APIs written by the Legion of the Bouncy Castle Inc. -------------------------------------------------------------------------------- -318. Group: org.apache.hadoop Name: hadoop-yarn-common Version: 3.3.6 +274. Group: org.apache.curator Name: curator-framework Version: 5.2.0 + +Manifest Project URL: http://www.apache.org/ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + Embedded license: **************************************** @@ -27441,117 +21487,27 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses/ for text of these licenses. - - -Apache Software Foundation License 2.0 --------------------------------------- - -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java -hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java - - -BSD 2-Clause ------------- - -hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.{c|h} -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h - - -BSD 3-Clause ------------- - -hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* -hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc -hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h -hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/protobuf/protobuf/cpp_helpers.h -hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/gmock-1.7.0/*/*.{cc|h} -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-v4.1.1.min.js - - -MIT License ------------ - -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js -hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css -hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/node_modules/.bin/r.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.10.18/* -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL - -uriparser2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/uriparser2) -hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch] - -Boost Software License, Version 1.0 -------------- -asio-1.10.2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2) -rapidxml-1.13 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/rapidxml-1.13) -tr2 (hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/tr2) - -Public Domain -------------- -hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/json-bignum.js - **************************************** -Apache Hadoop -Copyright 2006 and onwards The Apache Software Foundation. + +Curator Framework +Copyright 2011-2021 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). -Export Control Notice ---------------------- -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic software: - -This software uses the SSL libraries from the Jetty project written -by mortbay.org. -Hadoop Yarn Server Web Proxy uses the BouncyCastle Java -cryptography APIs written by the Legion of the Bouncy Castle Inc. -------------------------------------------------------------------------------- -319. Group: org.apache.hadoop.thirdparty Name: hadoop-shaded-guava Version: 1.1.1 +275. Group: org.apache.curator Name: curator-recipes Version: 5.2.0 + +Manifest Project URL: http://www.apache.org/ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + Embedded license: **************************************** @@ -27759,41 +21715,22 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This project bundles some components that are also licensed under the Apache -License Version 2.0: - -com.google.guava:guava:jar:30.1.1-jre -com.google.j2objc:j2objc-annotations:1.3 -com.google.errorprone:error_prone_annotations:2.5.1 - --------------------------------------------------------------------------------- -This product bundles various third-party components under other open source -licenses. This section summarizes those components and their licenses. -See licenses-binary/ for text of these licenses. - - -BSD 3-Clause ------------- -com.google.protobuf:protobuf-java:3.7.1 - - -MIT License ------------ -org.checkerframework:checker-qual:jar:3.8.0 **************************************** -Apache Hadoop Third-party Libs -Copyright 2020 and onwards The Apache Software Foundation. + +Curator Recipes +Copyright 2011-2021 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). + + -------------------------------------------------------------------------------- -320. Group: org.apache.hadoop.thirdparty Name: hadoop-shaded-protobuf_3_7 Version: 1.1.1 +276. Group: org.apache.hadoop Name: hadoop-annotations Version: 3.4.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -28002,43 +21939,127 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- -This project bundles some components that are also licensed under the Apache -License Version 2.0: - -com.google.guava:guava:jar:30.1.1-jre -com.google.j2objc:j2objc-annotations:1.3 -com.google.errorprone:error_prone_annotations:2.5.1 - -------------------------------------------------------------------------------- This product bundles various third-party components under other open source licenses. This section summarizes those components and their licenses. -See licenses-binary/ for text of these licenses. +See licenses/ for text of these licenses. + + +Apache Software Foundation License 2.0 +-------------------------------------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/nvd3-1.8.5.* (css and js files) +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java + + +BSD 2-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/{lz4.h,lz4.c,lz4hc.h,lz4hc.c} +hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h BSD 3-Clause ------------ -com.google.protobuf:protobuf-java:3.7.1 + +hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* +hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc +hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-3.5.17.min.js MIT License ----------- -org.checkerframework:checker-qual:jar:3.8.0 + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-nvd3-1.0.9.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-route-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.11.5/* +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + +======= +For hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch]: + +Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + **************************************** -Apache Hadoop Third-party Libs -Copyright 2020 and onwards The Apache Software Foundation. +Apache Hadoop +Copyright 2006 and onwards The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). --------------------------------------------------------------------------------- +Export Control Notice +--------------------- -321. Group: org.apache.httpcomponents Name: httpasyncclient Version: 4.1.5 +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. -POM Project URL: http://hc.apache.org/httpcomponents-asyncclient +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +The following provides more details on the included cryptographic software: + +This software uses the SSL libraries from the Jetty project written +by mortbay.org. +Hadoop Yarn Server Web Proxy uses the BouncyCastle Java +cryptography APIs written by the Legion of the Bouncy Castle Inc. + +-------------------------------------------------------------------------------- + +277. Group: org.apache.hadoop Name: hadoop-auth Version: 3.4.0 + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -28247,24 +22268,127 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses/ for text of these licenses. -Apache HttpAsyncClient -Copyright 2010-2021 The Apache Software Foundation +Apache Software Foundation License 2.0 +-------------------------------------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/nvd3-1.8.5.* (css and js files) +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java + + +BSD 2-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/{lz4.h,lz4.c,lz4hc.h,lz4hc.c} +hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h + + +BSD 3-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* +hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc +hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-3.5.17.min.js + + +MIT License +----------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-nvd3-1.0.9.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-route-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.11.5/* +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + +======= +For hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch]: + +Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + **************************************** + +Apache Hadoop +Copyright 2006 and onwards The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +Export Control Notice +--------------------- + +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. +The following provides more details on the included cryptographic software: --------------------------------------------------------------------------------- +This software uses the SSL libraries from the Jetty project written +by mortbay.org. +Hadoop Yarn Server Web Proxy uses the BouncyCastle Java +cryptography APIs written by the Legion of the Bouncy Castle Inc. -322. Group: org.apache.httpcomponents Name: httpclient Version: 4.5.14 +-------------------------------------------------------------------------------- -POM Project URL: http://hc.apache.org/httpcomponents-client-ga +278. Group: org.apache.hadoop Name: hadoop-common Version: 3.4.0 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -28473,24 +22597,127 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses/ for text of these licenses. -Apache HttpClient -Copyright 1999-2022 The Apache Software Foundation +Apache Software Foundation License 2.0 +-------------------------------------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/nvd3-1.8.5.* (css and js files) +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java + + +BSD 2-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/{lz4.h,lz4.c,lz4hc.h,lz4hc.c} +hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h + + +BSD 3-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* +hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc +hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-3.5.17.min.js + + +MIT License +----------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-nvd3-1.0.9.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-route-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.11.5/* +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + +======= +For hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch]: + +Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + **************************************** + +Apache Hadoop +Copyright 2006 and onwards The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +Export Control Notice +--------------------- +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. --------------------------------------------------------------------------------- +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. -323. Group: org.apache.httpcomponents Name: httpcore Version: 4.4.16 +The following provides more details on the included cryptographic software: -POM Project URL: http://hc.apache.org/httpcomponents-core-ga +This software uses the SSL libraries from the Jetty project written +by mortbay.org. +Hadoop Yarn Server Web Proxy uses the BouncyCastle Java +cryptography APIs written by the Legion of the Bouncy Castle Inc. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +-------------------------------------------------------------------------------- + +279. Group: org.apache.hadoop Name: hadoop-mapreduce-client-core Version: 3.4.0 + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -28699,24 +22926,127 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses/ for text of these licenses. -Apache HttpCore -Copyright 2005-2022 The Apache Software Foundation +Apache Software Foundation License 2.0 +-------------------------------------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/nvd3-1.8.5.* (css and js files) +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java + + +BSD 2-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/{lz4.h,lz4.c,lz4hc.h,lz4hc.c} +hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h + + +BSD 3-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* +hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc +hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-3.5.17.min.js + + +MIT License +----------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-nvd3-1.0.9.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-route-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.11.5/* +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + +======= +For hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch]: + +Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + **************************************** + +Apache Hadoop +Copyright 2006 and onwards The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +Export Control Notice +--------------------- +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. --------------------------------------------------------------------------------- +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. -324. Group: org.apache.httpcomponents Name: httpcore-nio Version: 4.4.15 +The following provides more details on the included cryptographic software: -POM Project URL: http://hc.apache.org/httpcomponents-core-ga +This software uses the SSL libraries from the Jetty project written +by mortbay.org. +Hadoop Yarn Server Web Proxy uses the BouncyCastle Java +cryptography APIs written by the Legion of the Bouncy Castle Inc. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +-------------------------------------------------------------------------------- + +280. Group: org.apache.hadoop Name: hadoop-yarn-api Version: 3.4.0 + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -28925,22 +23255,127 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses/ for text of these licenses. -Apache HttpCore NIO -Copyright 2005-2021 The Apache Software Foundation +Apache Software Foundation License 2.0 +-------------------------------------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/nvd3-1.8.5.* (css and js files) +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java + + +BSD 2-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/{lz4.h,lz4.c,lz4hc.h,lz4hc.c} +hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h + + +BSD 3-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* +hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc +hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-3.5.17.min.js + + +MIT License +----------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-nvd3-1.0.9.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-route-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.11.5/* +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + +======= +For hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch]: + +Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + **************************************** + +Apache Hadoop +Copyright 2006 and onwards The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +Export Control Notice +--------------------- + +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. +The following provides more details on the included cryptographic software: + +This software uses the SSL libraries from the Jetty project written +by mortbay.org. +Hadoop Yarn Server Web Proxy uses the BouncyCastle Java +cryptography APIs written by the Legion of the Bouncy Castle Inc. -------------------------------------------------------------------------------- -325. Group: org.apache.httpcomponents.client5 Name: httpclient5 Version: 5.1.4 +281. Group: org.apache.hadoop Name: hadoop-yarn-client Version: 3.4.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -29149,22 +23584,127 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses/ for text of these licenses. -Apache HttpClient -Copyright 1999-2020 The Apache Software Foundation +Apache Software Foundation License 2.0 +-------------------------------------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/nvd3-1.8.5.* (css and js files) +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java + + +BSD 2-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/{lz4.h,lz4.c,lz4hc.h,lz4hc.c} +hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h + + +BSD 3-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* +hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc +hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-3.5.17.min.js + + +MIT License +----------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-nvd3-1.0.9.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-route-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.11.5/* +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + +======= +For hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch]: + +Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + **************************************** + +Apache Hadoop +Copyright 2006 and onwards The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +Export Control Notice +--------------------- + +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. + +The following provides more details on the included cryptographic software: +This software uses the SSL libraries from the Jetty project written +by mortbay.org. +Hadoop Yarn Server Web Proxy uses the BouncyCastle Java +cryptography APIs written by the Legion of the Bouncy Castle Inc. -------------------------------------------------------------------------------- -326. Group: org.apache.httpcomponents.core5 Name: httpcore5 Version: 5.1.5 +282. Group: org.apache.hadoop Name: hadoop-yarn-common Version: 3.4.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -29373,20 +23913,125 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses/ for text of these licenses. -Apache HttpComponents Core HTTP/1.1 -Copyright 2005-2020 The Apache Software Foundation +Apache Software Foundation License 2.0 +-------------------------------------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/nvd3-1.8.5.* (css and js files) +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/AbstractFuture.java +hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/TimeoutFuture.java + + +BSD 2-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/{lz4.h,lz4.c,lz4hc.h,lz4hc.c} +hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/compat/{fstatat|openat|unlinkat}.h + + +BSD 3-Clause +------------ + +hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/bloom/* +hadoop-common-project/hadoop-common/src/main/native/gtest/gtest-all.cc +hadoop-common-project/hadoop-common/src/main/native/gtest/include/gtest/gtest.h +hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/bulk_crc32_x86.c +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/d3.v3.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/d3-3.5.17.min.js + + +MIT License +----------- + +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-nvd3-1.0.9.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/angular-route-1.6.4.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/bootstrap-3.4.1 +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.css +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dataTables.bootstrap.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-full-2.0.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/dust-helpers-1.1.1.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery-3.6.0.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/jquery.dataTables.min.js +hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/static/moment.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/bootstrap.min.js +hadoop-tools/hadoop-sls/src/main/html/js/thirdparty/jquery.js +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap.min.css +hadoop-tools/hadoop-sls/src/main/html/css/bootstrap-responsive.min.css +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-1.11.5/* +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jquery +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/jt/jquery.jstree.js +hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/resources/TERMINAL + +======= +For hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/cJSON.[ch]: + +Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + **************************************** + +Apache Hadoop +Copyright 2006 and onwards The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +Export Control Notice +--------------------- + +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. + +The following provides more details on the included cryptographic software: +This software uses the SSL libraries from the Jetty project written +by mortbay.org. +Hadoop Yarn Server Web Proxy uses the BouncyCastle Java +cryptography APIs written by the Legion of the Bouncy Castle Inc. -------------------------------------------------------------------------------- -327. Group: org.apache.httpcomponents.core5 Name: httpcore5-h2 Version: 5.1.5 +283. Group: org.apache.hadoop.thirdparty Name: hadoop-shaded-guava Version: 1.2.0 POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -29597,24 +24242,43 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** +-------------------------------------------------------------------------------- +This project bundles some components that are also licensed under the Apache +License Version 2.0: +com.google.guava:guava:jar:32.0.1-jre +com.google.j2objc:j2objc-annotations:1.3 +com.google.errorprone:error_prone_annotations:2.5.1 +org.apache.avro:avro:1.11.3 -Apache HttpComponents Core HTTP/2 -Copyright 2005-2020 The Apache Software Foundation +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses-binary/ for text of these licenses. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +BSD 3-Clause +------------ +com.google.protobuf:protobuf-java:3.21.12 --------------------------------------------------------------------------------- +MIT License +----------- +org.checkerframework:checker-qual:jar:3.8.0 -328. Group: org.apache.kafka Name: connect-api Version: 3.4.0 + **************************************** -POM Project URL: https://kafka.apache.org +Apache Hadoop Third-party Libs +Copyright 2020 and onwards The Apache Software Foundation. -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +-------------------------------------------------------------------------------- + +284. Group: org.apache.hadoop.thirdparty Name: hadoop-shaded-protobuf_3_21 Version: 1.2.0 + +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -29823,278 +24487,45 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** - -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. - -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. - -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. - -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. - -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- +This project bundles some components that are also licensed under the Apache +License Version 2.0: -329. Group: org.apache.kafka Name: connect-api Version: 3.5.1 - -POM Project URL: https://kafka.apache.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. +com.google.guava:guava:jar:32.0.1-jre +com.google.j2objc:j2objc-annotations:1.3 +com.google.errorprone:error_prone_annotations:2.5.1 +org.apache.avro:avro:1.11.3 - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +-------------------------------------------------------------------------------- +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses-binary/ for text of these licenses. - Copyright [yyyy] [name of copyright owner] - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +BSD 3-Clause +------------ +com.google.protobuf:protobuf-java:3.21.12 - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +MIT License +----------- +org.checkerframework:checker-qual:jar:3.8.0 **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. +Apache Hadoop Third-party Libs +Copyright 2020 and onwards The Apache Software Foundation. This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. - -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. - -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. - -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. +The Apache Software Foundation (http://www.apache.org/). -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -330. Group: org.apache.kafka Name: connect-json Version: 3.4.0 +285. Group: org.apache.httpcomponents Name: httpasyncclient Version: 4.1.5 -POM Project URL: https://kafka.apache.org +POM Project URL: http://hc.apache.org/httpcomponents-asyncclient -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -30305,36 +24736,22 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Apache HttpAsyncClient +Copyright 2010-2021 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -331. Group: org.apache.kafka Name: connect-json Version: 3.5.1 +286. Group: org.apache.httpcomponents Name: httpclient Version: 4.5.14 -POM Project URL: https://kafka.apache.org +POM Project URL: http://hc.apache.org/httpcomponents-client-ga -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -30545,36 +24962,22 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Apache HttpClient +Copyright 1999-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -332. Group: org.apache.kafka Name: connect-runtime Version: 3.5.1 +287. Group: org.apache.httpcomponents Name: httpcore Version: 4.4.16 -POM Project URL: https://kafka.apache.org +POM Project URL: http://hc.apache.org/httpcomponents-core-ga -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -30785,36 +25188,22 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Apache HttpCore +Copyright 2005-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -333. Group: org.apache.kafka Name: connect-transforms Version: 3.5.1 +288. Group: org.apache.httpcomponents Name: httpcore-nio Version: 4.4.15 -POM Project URL: https://kafka.apache.org +POM Project URL: http://hc.apache.org/httpcomponents-core-ga -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -31025,36 +25414,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Apache HttpCore NIO +Copyright 2005-2021 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -334. Group: org.apache.kafka Name: kafka-clients Version: 7.4.0-ccs +289. Group: org.apache.httpcomponents.client5 Name: httpclient5 Version: 5.3.1 -POM Project URL: https://kafka.apache.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -31236,335 +25609,49 @@ Embedded license: incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. - -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. - -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. - -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. - -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java - **************************************** - -Apache Kafka Message Definitions -================================ - -Introduction ------------- -The JSON files in this directory define the Apache Kafka message protocol. -This protocol describes what information clients and servers send to each -other, and how it is serialized. Note that this version of JSON supports -comments. Comments begin with a double forward slash. - -When Kafka is compiled, these specification files are translated into Java code -to read and write messages. Any change to these JSON files will trigger a -recompilation of this generated code. - -These specification files replace an older system where hand-written -serialization code was used. Over time, we will migrate all messages to using -automatically generated serialization and deserialization code. - -Requests and Responses ----------------------- -The Kafka protocol features requests and responses. Requests are sent to a -server in order to get a response. Each request is uniquely identified by a -16-bit integer called the "api key". The API key of the response will always -match that of the request. - -Each message has a unique 16-bit version number. The schema might be different -for each version of the message. Sometimes, the version is incremented even -though the schema has not changed. This may indicate that the server should -behave differently in some way. The version of a response must always match -the version of the corresponding request. - -Each request or response has a top-level field named "validVersions." This -specifies the versions of the protocol that our code understands. For example, -specifying "0-2" indicates that we understand versions 0, 1, and 2. You must -always specify the highest message version which is supported. - -The only old message versions that are no longer supported are version 0 of -MetadataRequest and MetadataResponse. In general, since we adopted KIP-97, -dropping support for old message versions is no longer allowed without a KIP. -Therefore, please be careful not to increase the lower end of the version -support interval for any message. - -MessageData Objects -------------------- -Using the JSON files in this directory, we generate Java code for MessageData -objects. These objects store request and response data for kafka. MessageData -objects do not contain a version number. Instead, a single MessageData object -represents every possible version of a Message. This makes working with -messages more convenient, because the same code path can be used for every -version of a message. - -Fields ------- -Each message contains an array of fields. Fields specify the data that should -be sent with the message. In general, fields have a name, a type, and version -information associated with them. - -The order that fields appear in a message is important. Fields which come -first in the message definition will be sent first over the network. Changing -the order of the fields in a message is an incompatible change. - -In each new message version, we may add or subtract fields. For example, if we -are creating a new version 3 of a message, we can add a new field with the -version spec "3+". This specifies that the field only appears in version 3 and -later. If a field is being removed, we should change its version from "0+" to -"0-2" to indicate that it will not appear in version 3 and later. - -Field Types ------------ -There are several primitive field types available. - -* "boolean": either true or false. - -* "int8": an 8-bit integer. - -* "int16": a 16-bit integer. - -* "uint16": a 16-bit unsigned integer. - -* "int32": a 32-bit integer. - -* "uint32": a 32-bit unsigned integer. - -* "int64": a 64-bit integer. - -* "float64": is a double-precision floating point number (IEEE 754). - -* "string": a UTF-8 string. - -* "uuid": a type 4 immutable universally unique identifier. - -* "bytes": binary data. - -* "records": recordset such as memory recordset. - -In addition to these primitive field types, there is also an array type. Array -types start with a "[]" and end with the name of the element type. For -example, []Foo declares an array of "Foo" objects. Array fields have their own -array of fields, which specifies what is in the contained objects. - -For information about how fields are serialized, see the [Kafka Protocol -Guide](https://kafka.apache.org/protocol.html). - -Nullable Fields ---------------- -Booleans, ints, and floats can never be null. However, fields that are strings, -bytes, uuid, records, or arrays may optionally be "nullable". When a field is -"nullable", that simply means that we are prepared to serialize and deserialize -null entries for that field. - -If you want to declare a field as nullable, you set "nullableVersions" for that -field. Nullability is implemented as a version range in order to accommodate a -very common pattern in Kafka where a field that was originally not nullable -becomes nullable in a later version. - -If a field is declared as non-nullable, and it is present in the message -version you are using, you should set it to a non-null value before serializing -the message. Otherwise, you will get a runtime error. - -Tagged Fields -------------- -Tagged fields are an extension to the Kafka protocol which allows optional data -to be attached to messages. Tagged fields can appear at the root level of -messages, or within any structure in the message. - -Unlike mandatory fields, tagged fields can be added to message versions that -already exists. Older servers will ignore new tagged fields which they do not -understand. - -In order to make a field tagged, set a "tag" for the field, and also set up -tagged versions for the field. The taggedVersions you specify should be -open-ended-- that is, they should specify a start version, but not an end -version. - -You can remove support for a tagged field from a specific version of a message, -but you can't reuse a tag once it has been used for something else. Once tags -have been used for something, they can't be used for anything else, without -breaking compatibility. - -Note that tagged fields can only be added to "flexible" message versions. - -Flexible Versions ------------------ -Kafka serialization has been improved over time to be more flexible and -efficient. Message versions that contain these improvements are referred to as -"flexible versions." - -In flexible versions, variable-length fields such as strings, arrays, and bytes -fields are serialized in a more efficient way that saves space. The new -serialization types start with compact. For example COMPACT_STRING is a more -efficient form of STRING. - -Serializing Messages --------------------- -The Message#write method writes out a message to a buffer. The fields that are -written out will depend on the version number that you supply to write(). When -you write out a message using an older version, fields that are too old to be -present in the schema will be omitted. - -When working with older message versions, please verify that the older message -schema includes all the data that needs to be sent. For example, it is probably -OK to skip sending a timeout field. However, a field which radically alters the -meaning of the request, such as a "validateOnly" boolean, should not be ignored. - -It's often useful to know how much space a message will take up before writing -it out to a buffer. You can find this out by calling the Message#size method. - -Deserializing Messages ----------------------- -Message objects may be deserialized using the Message#read method. This method -overwrites all the data currently in the message object with new data. - -Any fields in the message object that are not present in the version that you -are deserializing will be reset to default values. Unless a custom default has -been set: - -* Integer fields default to 0. - -* Floats default to 0. - -* Booleans default to false. - -* Strings default to the empty string. - -* Bytes fields default to the empty byte array. - -* Uuid fields default to zero uuid. - -* Records fields default to null. - -* Array fields default to empty. - -You can specify "null" as a default value for a string field by specifying the -literal string "null". Note that you can only specify null as a default if all -versions of the field are nullable. - -Custom Default Values ---------------------- -You may set a custom default for fields that are integers, booleans, floats, or -strings. Just add a "default" entry in the JSON object. The custom default -overrides the normal default for the type. So for example, you could make a -boolean field default to true rather than false, and so forth. + END OF TERMS AND CONDITIONS -Note that the default must be valid for the field type. So the default for an -int16 field must be an integer that fits in 16 bits, and so forth. You may -specify hex or octal values, as long as they are prefixed with 0x or 0. It is -currently not possible to specify a custom default for bytes or array fields. + APPENDIX: How to apply the Apache License to your work. -Custom defaults are useful when an older message version lacked some -information. For example, if an older request lacked a timeout field, you may -want to specify that the server should assume that the timeout for such a -request is 5000 ms (or some other arbitrary value). + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Ignorable Fields ----------------- -When we write messages using an older or newer format, not all fields may be -present. The message receiver will fill in the default value for the field -during deserialization. Therefore, if the source field was set to a non-default -value, that information will be lost. + Copyright [yyyy] [name of copyright owner] -In some cases, this information loss is acceptable. For example, if a timeout -field does not get preserved, this is not a problem. However, in other cases, -the field is really quite important and should not be discarded. One example is -a "verify only" boolean which changes the whole meaning of the request. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -By default, we assume that information loss is not acceptable. The message -serialization code will throw an exception if the ignored field is not set to -the default value. If information loss for a field is OK, please set -"ignorable" to true for the field to disable this behavior. When ignorable is -set to true, the field may be silently omitted during serialization. + http://www.apache.org/licenses/LICENSE-2.0 -Hash Sets ---------- -One very common pattern in Kafka is to load array elements from a message into -a Map or Set for easier access. The message protocol makes this easier with -the "mapKey" concept. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -If some of the elements of an array are annotated with "mapKey": true, the -entire array will be treated as a linked hash set rather than a list. Elements -in this set will be accessible in O(1) time with an automatically generated -"find" function. The order of elements in the set will still be preserved, -however. New entries that are added to the set always show up as last in the -ordering. + **************************************** -Incompatible Changes --------------------- -It's very important to avoid making incompatible changes to the message -protocol. Here are some examples of incompatible changes: -#### Making changes to a protocol version which has already been released. -Protocol versions that have been released must be regarded as done. If there -were mistakes, they should be corrected in a new version rather than changing -the existing version. +Apache HttpClient +Copyright 1999-2021 The Apache Software Foundation -#### Re-ordering existing fields. -It is OK to add new fields before or after existing fields. However, existing -fields should not be re-ordered with respect to each other. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -#### Changing the default of an existing field. -You must never change the default of a field which already exists. Otherwise, -new clients and old servers will not agree on the default, and so forth. -#### Changing the type of an existing field. -One exception is that an array of primitives may be changed to an array of -structures containing the same data, as long as the conversion is done -correctly. The Kafka protocol does not do any "boxing" of structures, so an -array of structs that contain a single int32 is the same as an array of int32s. -------------------------------------------------------------------------------- -335. Group: org.apache.kafka Name: kafka-clients Version: 7.5.0-ccs - -POM Project URL: https://kafka.apache.org +290. Group: org.apache.httpcomponents.core5 Name: httpcore5 Version: 5.2.4 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -31775,302 +25862,242 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. - -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. - -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. - -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. - -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java - **************************************** - -Apache Kafka Message Definitions -================================ - -Introduction ------------- -The JSON files in this directory define the Apache Kafka message protocol. -This protocol describes what information clients and servers send to each -other, and how it is serialized. Note that this version of JSON supports -comments. Comments begin with a double forward slash. - -When Kafka is compiled, these specification files are translated into Java code -to read and write messages. Any change to these JSON files will trigger a -recompilation of this generated code. - -These specification files replace an older system where hand-written -serialization code was used. Over time, we will migrate all messages to using -automatically generated serialization and deserialization code. - -Requests and Responses ----------------------- -The Kafka protocol features requests and responses. Requests are sent to a -server in order to get a response. Each request is uniquely identified by a -16-bit integer called the "api key". The API key of the response will always -match that of the request. - -Each message has a unique 16-bit version number. The schema might be different -for each version of the message. Sometimes, the version is incremented even -though the schema has not changed. This may indicate that the server should -behave differently in some way. The version of a response must always match -the version of the corresponding request. - -Each request or response has a top-level field named "validVersions." This -specifies the versions of the protocol that our code understands. For example, -specifying "0-2" indicates that we understand versions 0, 1, and 2. You must -always specify the highest message version which is supported. - -The only old message versions that are no longer supported are version 0 of -MetadataRequest and MetadataResponse. In general, since we adopted KIP-97, -dropping support for old message versions is no longer allowed without a KIP. -Therefore, please be careful not to increase the lower end of the version -support interval for any message. - -MessageData Objects -------------------- -Using the JSON files in this directory, we generate Java code for MessageData -objects. These objects store request and response data for kafka. MessageData -objects do not contain a version number. Instead, a single MessageData object -represents every possible version of a Message. This makes working with -messages more convenient, because the same code path can be used for every -version of a message. - -Fields ------- -Each message contains an array of fields. Fields specify the data that should -be sent with the message. In general, fields have a name, a type, and version -information associated with them. - -The order that fields appear in a message is important. Fields which come -first in the message definition will be sent first over the network. Changing -the order of the fields in a message is an incompatible change. - -In each new message version, we may add or subtract fields. For example, if we -are creating a new version 3 of a message, we can add a new field with the -version spec "3+". This specifies that the field only appears in version 3 and -later. If a field is being removed, we should change its version from "0+" to -"0-2" to indicate that it will not appear in version 3 and later. - -Field Types ------------ -There are several primitive field types available. - -* "boolean": either true or false. - -* "int8": an 8-bit integer. -* "int16": a 16-bit integer. +Apache HttpComponents Core HTTP/1.1 +Copyright 2005-2021 The Apache Software Foundation -* "uint16": a 16-bit unsigned integer. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -* "int32": a 32-bit integer. -* "uint32": a 32-bit unsigned integer. -* "int64": a 64-bit integer. +-------------------------------------------------------------------------------- -* "float64": is a double-precision floating point number (IEEE 754). +291. Group: org.apache.httpcomponents.core5 Name: httpcore5-h2 Version: 5.2.4 -* "string": a UTF-8 string. +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -* "uuid": a type 4 immutable universally unique identifier. +Embedded license: -* "bytes": binary data. + **************************************** -* "records": recordset such as memory recordset. -In addition to these primitive field types, there is also an array type. Array -types start with a "[]" and end with the name of the element type. For -example, []Foo declares an array of "Foo" objects. Array fields have their own -array of fields, which specifies what is in the contained objects. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -For information about how fields are serialized, see the [Kafka Protocol -Guide](https://kafka.apache.org/protocol.html). + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Nullable Fields ---------------- -Booleans, ints, and floats can never be null. However, fields that are strings, -bytes, uuid, records, or arrays may optionally be "nullable". When a field is -"nullable", that simply means that we are prepared to serialize and deserialize -null entries for that field. + 1. Definitions. -If you want to declare a field as nullable, you set "nullableVersions" for that -field. Nullability is implemented as a version range in order to accommodate a -very common pattern in Kafka where a field that was originally not nullable -becomes nullable in a later version. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -If a field is declared as non-nullable, and it is present in the message -version you are using, you should set it to a non-null value before serializing -the message. Otherwise, you will get a runtime error. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Tagged Fields -------------- -Tagged fields are an extension to the Kafka protocol which allows optional data -to be attached to messages. Tagged fields can appear at the root level of -messages, or within any structure in the message. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -Unlike mandatory fields, tagged fields can be added to message versions that -already exists. Older servers will ignore new tagged fields which they do not -understand. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -In order to make a field tagged, set a "tag" for the field, and also set up -tagged versions for the field. The taggedVersions you specify should be -open-ended-- that is, they should specify a start version, but not an end -version. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -You can remove support for a tagged field from a specific version of a message, -but you can't reuse a tag once it has been used for something else. Once tags -have been used for something, they can't be used for anything else, without -breaking compatibility. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Note that tagged fields can only be added to "flexible" message versions. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Flexible Versions ------------------ -Kafka serialization has been improved over time to be more flexible and -efficient. Message versions that contain these improvements are referred to as -"flexible versions." + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -In flexible versions, variable-length fields such as strings, arrays, and bytes -fields are serialized in a more efficient way that saves space. The new -serialization types start with compact. For example COMPACT_STRING is a more -efficient form of STRING. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Serializing Messages --------------------- -The Message#write method writes out a message to a buffer. The fields that are -written out will depend on the version number that you supply to write(). When -you write out a message using an older version, fields that are too old to be -present in the schema will be omitted. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -When working with older message versions, please verify that the older message -schema includes all the data that needs to be sent. For example, it is probably -OK to skip sending a timeout field. However, a field which radically alters the -meaning of the request, such as a "validateOnly" boolean, should not be ignored. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -It's often useful to know how much space a message will take up before writing -it out to a buffer. You can find this out by calling the Message#size method. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -Deserializing Messages ----------------------- -Message objects may be deserialized using the Message#read method. This method -overwrites all the data currently in the message object with new data. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -Any fields in the message object that are not present in the version that you -are deserializing will be reset to default values. Unless a custom default has -been set: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -* Integer fields default to 0. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -* Floats default to 0. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -* Booleans default to false. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -* Strings default to the empty string. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -* Bytes fields default to the empty byte array. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -* Uuid fields default to zero uuid. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -* Records fields default to null. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -* Array fields default to empty. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -You can specify "null" as a default value for a string field by specifying the -literal string "null". Note that you can only specify null as a default if all -versions of the field are nullable. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Custom Default Values ---------------------- -You may set a custom default for fields that are integers, booleans, floats, or -strings. Just add a "default" entry in the JSON object. The custom default -overrides the normal default for the type. So for example, you could make a -boolean field default to true rather than false, and so forth. + END OF TERMS AND CONDITIONS -Note that the default must be valid for the field type. So the default for an -int16 field must be an integer that fits in 16 bits, and so forth. You may -specify hex or octal values, as long as they are prefixed with 0x or 0. It is -currently not possible to specify a custom default for bytes or array fields. + APPENDIX: How to apply the Apache License to your work. -Custom defaults are useful when an older message version lacked some -information. For example, if an older request lacked a timeout field, you may -want to specify that the server should assume that the timeout for such a -request is 5000 ms (or some other arbitrary value). + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Ignorable Fields ----------------- -When we write messages using an older or newer format, not all fields may be -present. The message receiver will fill in the default value for the field -during deserialization. Therefore, if the source field was set to a non-default -value, that information will be lost. + Copyright [yyyy] [name of copyright owner] -In some cases, this information loss is acceptable. For example, if a timeout -field does not get preserved, this is not a problem. However, in other cases, -the field is really quite important and should not be discarded. One example is -a "verify only" boolean which changes the whole meaning of the request. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -By default, we assume that information loss is not acceptable. The message -serialization code will throw an exception if the ignored field is not set to -the default value. If information loss for a field is OK, please set -"ignorable" to true for the field to disable this behavior. When ignorable is -set to true, the field may be silently omitted during serialization. + http://www.apache.org/licenses/LICENSE-2.0 -Hash Sets ---------- -One very common pattern in Kafka is to load array elements from a message into -a Map or Set for easier access. The message protocol makes this easier with -the "mapKey" concept. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -If some of the elements of an array are annotated with "mapKey": true, the -entire array will be treated as a linked hash set rather than a list. Elements -in this set will be accessible in O(1) time with an automatically generated -"find" function. The order of elements in the set will still be preserved, -however. New entries that are added to the set always show up as last in the -ordering. + **************************************** -Incompatible Changes --------------------- -It's very important to avoid making incompatible changes to the message -protocol. Here are some examples of incompatible changes: -#### Making changes to a protocol version which has already been released. -Protocol versions that have been released must be regarded as done. If there -were mistakes, they should be corrected in a new version rather than changing -the existing version. +Apache HttpComponents Core HTTP/2 +Copyright 2005-2021 The Apache Software Foundation -#### Re-ordering existing fields. -It is OK to add new fields before or after existing fields. However, existing -fields should not be re-ordered with respect to each other. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -#### Changing the default of an existing field. -You must never change the default of a field which already exists. Otherwise, -new clients and old servers will not agree on the default, and so forth. -#### Changing the type of an existing field. -One exception is that an array of primitives may be changed to an array of -structures containing the same data, as long as the conversion is done -correctly. The Kafka protocol does not do any "boxing" of structures, so an -array of structs that contain a single int32 is the same as an array of int32s. -------------------------------------------------------------------------------- -336. Group: org.apache.kafka Name: kafka-group-coordinator Version: 7.4.0-ccs +292. Group: org.apache.kafka Name: connect-api Version: 3.6.1 POM Project URL: https://kafka.apache.org @@ -32310,7 +26337,7 @@ This project contains the following code copied from Apache Hive: streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -337. Group: org.apache.kafka Name: kafka-group-coordinator Version: 7.5.0-ccs +293. Group: org.apache.kafka Name: connect-json Version: 3.6.1 POM Project URL: https://kafka.apache.org @@ -32550,7 +26577,7 @@ This project contains the following code copied from Apache Hive: streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -338. Group: org.apache.kafka Name: kafka-log4j-appender Version: 3.5.1 +294. Group: org.apache.kafka Name: kafka-clients Version: 3.6.1 POM Project URL: https://kafka.apache.org @@ -32788,9 +26815,279 @@ Some portions of this file Copyright (c) 2004-2006 Intel Corporation and license This project contains the following code copied from Apache Hive: streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java + **************************************** + +Apache Kafka Message Definitions +================================ + +Introduction +------------ +The JSON files in this directory define the Apache Kafka message protocol. +This protocol describes what information clients and servers send to each +other, and how it is serialized. Note that this version of JSON supports +comments. Comments begin with a double forward slash. + +When Kafka is compiled, these specification files are translated into Java code +to read and write messages. Any change to these JSON files will trigger a +recompilation of this generated code. + +These specification files replace an older system where hand-written +serialization code was used. Over time, we will migrate all messages to using +automatically generated serialization and deserialization code. + +Requests and Responses +---------------------- +The Kafka protocol features requests and responses. Requests are sent to a +server in order to get a response. Each request is uniquely identified by a +16-bit integer called the "api key". The API key of the response will always +match that of the request. + +Each message has a unique 16-bit version number. The schema might be different +for each version of the message. Sometimes, the version is incremented even +though the schema has not changed. This may indicate that the server should +behave differently in some way. The version of a response must always match +the version of the corresponding request. + +Each request or response has a top-level field named "validVersions." This +specifies the versions of the protocol that our code understands. For example, +specifying "0-2" indicates that we understand versions 0, 1, and 2. You must +always specify the highest message version which is supported. + +The only old message versions that are no longer supported are version 0 of +MetadataRequest and MetadataResponse. In general, since we adopted KIP-97, +dropping support for old message versions is no longer allowed without a KIP. +Therefore, please be careful not to increase the lower end of the version +support interval for any message. + +MessageData Objects +------------------- +Using the JSON files in this directory, we generate Java code for MessageData +objects. These objects store request and response data for kafka. MessageData +objects do not contain a version number. Instead, a single MessageData object +represents every possible version of a Message. This makes working with +messages more convenient, because the same code path can be used for every +version of a message. + +Fields +------ +Each message contains an array of fields. Fields specify the data that should +be sent with the message. In general, fields have a name, a type, and version +information associated with them. + +The order that fields appear in a message is important. Fields which come +first in the message definition will be sent first over the network. Changing +the order of the fields in a message is an incompatible change. + +In each new message version, we may add or subtract fields. For example, if we +are creating a new version 3 of a message, we can add a new field with the +version spec "3+". This specifies that the field only appears in version 3 and +later. If a field is being removed, we should change its version from "0+" to +"0-2" to indicate that it will not appear in version 3 and later. + +Field Types +----------- +There are several primitive field types available. + +* "boolean": either true or false. + +* "int8": an 8-bit integer. + +* "int16": a 16-bit integer. + +* "uint16": a 16-bit unsigned integer. + +* "int32": a 32-bit integer. + +* "uint32": a 32-bit unsigned integer. + +* "int64": a 64-bit integer. + +* "float64": is a double-precision floating point number (IEEE 754). + +* "string": a UTF-8 string. + +* "uuid": a type 4 immutable universally unique identifier. + +* "bytes": binary data. + +* "records": recordset such as memory recordset. + +In addition to these primitive field types, there is also an array type. Array +types start with a "[]" and end with the name of the element type. For +example, []Foo declares an array of "Foo" objects. Array fields have their own +array of fields, which specifies what is in the contained objects. + +For information about how fields are serialized, see the [Kafka Protocol +Guide](https://kafka.apache.org/protocol.html). + +Nullable Fields +--------------- +Booleans, ints, and floats can never be null. However, fields that are strings, +bytes, uuid, records, or arrays may optionally be "nullable". When a field is +"nullable", that simply means that we are prepared to serialize and deserialize +null entries for that field. + +If you want to declare a field as nullable, you set "nullableVersions" for that +field. Nullability is implemented as a version range in order to accommodate a +very common pattern in Kafka where a field that was originally not nullable +becomes nullable in a later version. + +If a field is declared as non-nullable, and it is present in the message +version you are using, you should set it to a non-null value before serializing +the message. Otherwise, you will get a runtime error. + +Tagged Fields +------------- +Tagged fields are an extension to the Kafka protocol which allows optional data +to be attached to messages. Tagged fields can appear at the root level of +messages, or within any structure in the message. + +Unlike mandatory fields, tagged fields can be added to message versions that +already exists. Older servers will ignore new tagged fields which they do not +understand. + +In order to make a field tagged, set a "tag" for the field, and also set up +tagged versions for the field. The taggedVersions you specify should be +open-ended-- that is, they should specify a start version, but not an end +version. + +You can remove support for a tagged field from a specific version of a message, +but you can't reuse a tag once it has been used for something else. Once tags +have been used for something, they can't be used for anything else, without +breaking compatibility. + +Note that tagged fields can only be added to "flexible" message versions. + +Flexible Versions +----------------- +Kafka serialization has been improved over time to be more flexible and +efficient. Message versions that contain these improvements are referred to as +"flexible versions." + +In flexible versions, variable-length fields such as strings, arrays, and bytes +fields are serialized in a more efficient way that saves space. The new +serialization types start with compact. For example COMPACT_STRING is a more +efficient form of STRING. + +Serializing Messages +-------------------- +The Message#write method writes out a message to a buffer. The fields that are +written out will depend on the version number that you supply to write(). When +you write out a message using an older version, fields that are too old to be +present in the schema will be omitted. + +When working with older message versions, please verify that the older message +schema includes all the data that needs to be sent. For example, it is probably +OK to skip sending a timeout field. However, a field which radically alters the +meaning of the request, such as a "validateOnly" boolean, should not be ignored. + +It's often useful to know how much space a message will take up before writing +it out to a buffer. You can find this out by calling the Message#size method. + +Deserializing Messages +---------------------- +Message objects may be deserialized using the Message#read method. This method +overwrites all the data currently in the message object with new data. + +Any fields in the message object that are not present in the version that you +are deserializing will be reset to default values. Unless a custom default has +been set: + +* Integer fields default to 0. + +* Floats default to 0. + +* Booleans default to false. + +* Strings default to the empty string. + +* Bytes fields default to the empty byte array. + +* Uuid fields default to zero uuid. + +* Records fields default to null. + +* Array fields default to empty. + +You can specify "null" as a default value for a string field by specifying the +literal string "null". Note that you can only specify null as a default if all +versions of the field are nullable. + +Custom Default Values +--------------------- +You may set a custom default for fields that are integers, booleans, floats, or +strings. Just add a "default" entry in the JSON object. The custom default +overrides the normal default for the type. So for example, you could make a +boolean field default to true rather than false, and so forth. + +Note that the default must be valid for the field type. So the default for an +int16 field must be an integer that fits in 16 bits, and so forth. You may +specify hex or octal values, as long as they are prefixed with 0x or 0. It is +currently not possible to specify a custom default for bytes or array fields. + +Custom defaults are useful when an older message version lacked some +information. For example, if an older request lacked a timeout field, you may +want to specify that the server should assume that the timeout for such a +request is 5000 ms (or some other arbitrary value). + +Ignorable Fields +---------------- +When we write messages using an older or newer format, not all fields may be +present. The message receiver will fill in the default value for the field +during deserialization. Therefore, if the source field was set to a non-default +value, that information will be lost. + +In some cases, this information loss is acceptable. For example, if a timeout +field does not get preserved, this is not a problem. However, in other cases, +the field is really quite important and should not be discarded. One example is +a "verify only" boolean which changes the whole meaning of the request. + +By default, we assume that information loss is not acceptable. The message +serialization code will throw an exception if the ignored field is not set to +the default value. If information loss for a field is OK, please set +"ignorable" to true for the field to disable this behavior. When ignorable is +set to true, the field may be silently omitted during serialization. + +Hash Sets +--------- +One very common pattern in Kafka is to load array elements from a message into +a Map or Set for easier access. The message protocol makes this easier with +the "mapKey" concept. + +If some of the elements of an array are annotated with "mapKey": true, the +entire array will be treated as a linked hash set rather than a list. Elements +in this set will be accessible in O(1) time with an automatically generated +"find" function. The order of elements in the set will still be preserved, +however. New entries that are added to the set always show up as last in the +ordering. + +Incompatible Changes +-------------------- +It's very important to avoid making incompatible changes to the message +protocol. Here are some examples of incompatible changes: + +#### Making changes to a protocol version which has already been released. +Protocol versions that have been released must be regarded as done. If there +were mistakes, they should be corrected in a new version rather than changing +the existing version. + +#### Re-ordering existing fields. +It is OK to add new fields before or after existing fields. However, existing +fields should not be re-ordered with respect to each other. + +#### Changing the default of an existing field. +You must never change the default of a field which already exists. Otherwise, +new clients and old servers will not agree on the default, and so forth. + +#### Changing the type of an existing field. +One exception is that an array of primitives may be changed to an array of +structures containing the same data, as long as the conversion is done +correctly. The Kafka protocol does not do any "boxing" of structures, so an +array of structs that contain a single int32 is the same as an array of int32s. + -------------------------------------------------------------------------------- -339. Group: org.apache.kafka Name: kafka-metadata Version: 7.4.0-ccs +295. Group: org.apache.kafka Name: kafka-clients Version: 7.6.0-ccs POM Project URL: https://kafka.apache.org @@ -33028,13 +27325,281 @@ Some portions of this file Copyright (c) 2004-2006 Intel Corporation and license This project contains the following code copied from Apache Hive: streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java --------------------------------------------------------------------------------- + **************************************** -340. Group: org.apache.kafka Name: kafka-metadata Version: 7.5.0-ccs +Apache Kafka Message Definitions +================================ -POM Project URL: https://kafka.apache.org +Introduction +------------ +The JSON files in this directory define the Apache Kafka message protocol. +This protocol describes what information clients and servers send to each +other, and how it is serialized. Note that this version of JSON supports +comments. Comments begin with a double forward slash. -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +When Kafka is compiled, these specification files are translated into Java code +to read and write messages. Any change to these JSON files will trigger a +recompilation of this generated code. + +These specification files replace an older system where hand-written +serialization code was used. Over time, we will migrate all messages to using +automatically generated serialization and deserialization code. + +Requests and Responses +---------------------- +The Kafka protocol features requests and responses. Requests are sent to a +server in order to get a response. Each request is uniquely identified by a +16-bit integer called the "api key". The API key of the response will always +match that of the request. + +Each message has a unique 16-bit version number. The schema might be different +for each version of the message. Sometimes, the version is incremented even +though the schema has not changed. This may indicate that the server should +behave differently in some way. The version of a response must always match +the version of the corresponding request. + +Each request or response has a top-level field named "validVersions." This +specifies the versions of the protocol that our code understands. For example, +specifying "0-2" indicates that we understand versions 0, 1, and 2. You must +always specify the highest message version which is supported. + +The only old message versions that are no longer supported are version 0 of +MetadataRequest and MetadataResponse. In general, since we adopted KIP-97, +dropping support for old message versions is no longer allowed without a KIP. +Therefore, please be careful not to increase the lower end of the version +support interval for any message. + +MessageData Objects +------------------- +Using the JSON files in this directory, we generate Java code for MessageData +objects. These objects store request and response data for kafka. MessageData +objects do not contain a version number. Instead, a single MessageData object +represents every possible version of a Message. This makes working with +messages more convenient, because the same code path can be used for every +version of a message. + +Fields +------ +Each message contains an array of fields. Fields specify the data that should +be sent with the message. In general, fields have a name, a type, and version +information associated with them. + +The order that fields appear in a message is important. Fields which come +first in the message definition will be sent first over the network. Changing +the order of the fields in a message is an incompatible change. + +In each new message version, we may add or subtract fields. For example, if we +are creating a new version 3 of a message, we can add a new field with the +version spec "3+". This specifies that the field only appears in version 3 and +later. If a field is being removed, we should change its version from "0+" to +"0-2" to indicate that it will not appear in version 3 and later. + +Field Types +----------- +There are several primitive field types available. + +* "boolean": either true or false. + +* "int8": an 8-bit integer. + +* "int16": a 16-bit integer. + +* "uint16": a 16-bit unsigned integer. + +* "int32": a 32-bit integer. + +* "uint32": a 32-bit unsigned integer. + +* "int64": a 64-bit integer. + +* "float64": is a double-precision floating point number (IEEE 754). + +* "string": a UTF-8 string. + +* "uuid": a type 4 immutable universally unique identifier. + +* "bytes": binary data. + +* "records": recordset such as memory recordset. + +In addition to these primitive field types, there is also an array type. Array +types start with a "[]" and end with the name of the element type. For +example, []Foo declares an array of "Foo" objects. Array fields have their own +array of fields, which specifies what is in the contained objects. + +For information about how fields are serialized, see the [Kafka Protocol +Guide](https://kafka.apache.org/protocol.html). + +Nullable Fields +--------------- +Booleans, ints, and floats can never be null. However, fields that are strings, +bytes, uuid, records, or arrays may optionally be "nullable". When a field is +"nullable", that simply means that we are prepared to serialize and deserialize +null entries for that field. + +If you want to declare a field as nullable, you set "nullableVersions" for that +field. Nullability is implemented as a version range in order to accommodate a +very common pattern in Kafka where a field that was originally not nullable +becomes nullable in a later version. + +If a field is declared as non-nullable, and it is present in the message +version you are using, you should set it to a non-null value before serializing +the message. Otherwise, you will get a runtime error. + +Tagged Fields +------------- +Tagged fields are an extension to the Kafka protocol which allows optional data +to be attached to messages. Tagged fields can appear at the root level of +messages, or within any structure in the message. + +Unlike mandatory fields, tagged fields can be added to message versions that +already exists. Older servers will ignore new tagged fields which they do not +understand. + +In order to make a field tagged, set a "tag" for the field, and also set up +tagged versions for the field. The taggedVersions you specify should be +open-ended-- that is, they should specify a start version, but not an end +version. + +You can remove support for a tagged field from a specific version of a message, +but you can't reuse a tag once it has been used for something else. Once tags +have been used for something, they can't be used for anything else, without +breaking compatibility. + +Note that tagged fields can only be added to "flexible" message versions. + +Flexible Versions +----------------- +Kafka serialization has been improved over time to be more flexible and +efficient. Message versions that contain these improvements are referred to as +"flexible versions." + +In flexible versions, variable-length fields such as strings, arrays, and bytes +fields are serialized in a more efficient way that saves space. The new +serialization types start with compact. For example COMPACT_STRING is a more +efficient form of STRING. + +Serializing Messages +-------------------- +The Message#write method writes out a message to a buffer. The fields that are +written out will depend on the version number that you supply to write(). When +you write out a message using an older version, fields that are too old to be +present in the schema will be omitted. + +When working with older message versions, please verify that the older message +schema includes all the data that needs to be sent. For example, it is probably +OK to skip sending a timeout field. However, a field which radically alters the +meaning of the request, such as a "validateOnly" boolean, should not be ignored. + +It's often useful to know how much space a message will take up before writing +it out to a buffer. You can find this out by calling the Message#size method. + +Deserializing Messages +---------------------- +Message objects may be deserialized using the Message#read method. This method +overwrites all the data currently in the message object with new data. + +Any fields in the message object that are not present in the version that you +are deserializing will be reset to default values. Unless a custom default has +been set: + +* Integer fields default to 0. + +* Floats default to 0. + +* Booleans default to false. + +* Strings default to the empty string. + +* Bytes fields default to the empty byte array. + +* Uuid fields default to zero uuid. + +* Records fields default to null. + +* Array fields default to empty. + +You can specify "null" as a default value for a string field by specifying the +literal string "null". Note that you can only specify null as a default if all +versions of the field are nullable. + +Custom Default Values +--------------------- +You may set a custom default for fields that are integers, booleans, floats, or +strings. Just add a "default" entry in the JSON object. The custom default +overrides the normal default for the type. So for example, you could make a +boolean field default to true rather than false, and so forth. + +Note that the default must be valid for the field type. So the default for an +int16 field must be an integer that fits in 16 bits, and so forth. You may +specify hex or octal values, as long as they are prefixed with 0x or 0. It is +currently not possible to specify a custom default for bytes or array fields. + +Custom defaults are useful when an older message version lacked some +information. For example, if an older request lacked a timeout field, you may +want to specify that the server should assume that the timeout for such a +request is 5000 ms (or some other arbitrary value). + +Ignorable Fields +---------------- +When we write messages using an older or newer format, not all fields may be +present. The message receiver will fill in the default value for the field +during deserialization. Therefore, if the source field was set to a non-default +value, that information will be lost. + +In some cases, this information loss is acceptable. For example, if a timeout +field does not get preserved, this is not a problem. However, in other cases, +the field is really quite important and should not be discarded. One example is +a "verify only" boolean which changes the whole meaning of the request. + +By default, we assume that information loss is not acceptable. The message +serialization code will throw an exception if the ignored field is not set to +the default value. If information loss for a field is OK, please set +"ignorable" to true for the field to disable this behavior. When ignorable is +set to true, the field may be silently omitted during serialization. + +Hash Sets +--------- +One very common pattern in Kafka is to load array elements from a message into +a Map or Set for easier access. The message protocol makes this easier with +the "mapKey" concept. + +If some of the elements of an array are annotated with "mapKey": true, the +entire array will be treated as a linked hash set rather than a list. Elements +in this set will be accessible in O(1) time with an automatically generated +"find" function. The order of elements in the set will still be preserved, +however. New entries that are added to the set always show up as last in the +ordering. + +Incompatible Changes +-------------------- +It's very important to avoid making incompatible changes to the message +protocol. Here are some examples of incompatible changes: + +#### Making changes to a protocol version which has already been released. +Protocol versions that have been released must be regarded as done. If there +were mistakes, they should be corrected in a new version rather than changing +the existing version. + +#### Re-ordering existing fields. +It is OK to add new fields before or after existing fields. However, existing +fields should not be re-ordered with respect to each other. + +#### Changing the default of an existing field. +You must never change the default of a field which already exists. Otherwise, +new clients and old servers will not agree on the default, and so forth. + +#### Changing the type of an existing field. +One exception is that an array of primitives may be changed to an array of +structures containing the same data, as long as the conversion is done +correctly. The Kafka protocol does not do any "boxing" of structures, so an +array of structs that contain a single int32 is the same as an array of int32s. + +-------------------------------------------------------------------------------- + +296. Group: org.apache.kerby Name: kerb-admin Version: 2.0.3 + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -33245,36 +27810,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby-kerb Admin +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -341. Group: org.apache.kafka Name: kafka-raft Version: 7.4.0-ccs +297. Group: org.apache.kerby Name: kerb-client Version: 2.0.3 -POM Project URL: https://kafka.apache.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -33485,36 +28034,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby-kerb Client +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -342. Group: org.apache.kafka Name: kafka-raft Version: 7.5.0-ccs - -POM Project URL: https://kafka.apache.org +298. Group: org.apache.kerby Name: kerb-common Version: 2.0.3 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -33725,36 +28258,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). +Kerby-kerb Common +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. - -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -343. Group: org.apache.kafka Name: kafka-server-common Version: 7.4.0-ccs - -POM Project URL: https://kafka.apache.org +299. Group: org.apache.kerby Name: kerb-core Version: 2.0.3 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -33965,36 +28482,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby-kerb core +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -344. Group: org.apache.kafka Name: kafka-server-common Version: 7.5.0-ccs - -POM Project URL: https://kafka.apache.org +300. Group: org.apache.kerby Name: kerb-crypto Version: 2.0.3 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -34205,36 +28706,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby-kerb Crypto +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -345. Group: org.apache.kafka Name: kafka-storage Version: 7.4.0-ccs +301. Group: org.apache.kerby Name: kerb-identity Version: 2.0.3 -POM Project URL: https://kafka.apache.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -34445,36 +28930,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby-kerb Identity +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -346. Group: org.apache.kafka Name: kafka-storage Version: 7.5.0-ccs - -POM Project URL: https://kafka.apache.org +302. Group: org.apache.kerby Name: kerb-server Version: 2.0.3 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -34685,36 +29154,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby-kerb Server +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -347. Group: org.apache.kafka Name: kafka-storage-api Version: 7.4.0-ccs +303. Group: org.apache.kerby Name: kerb-simplekdc Version: 2.0.3 -POM Project URL: https://kafka.apache.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -34925,36 +29378,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). +Kerb Simple Kdc +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. - -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -348. Group: org.apache.kafka Name: kafka-storage-api Version: 7.5.0-ccs - -POM Project URL: https://kafka.apache.org +304. Group: org.apache.kerby Name: kerb-util Version: 2.0.3 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -35165,36 +29602,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby-kerb Util +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -349. Group: org.apache.kafka Name: kafka-tools Version: 3.5.1 - -POM Project URL: https://kafka.apache.org +305. Group: org.apache.kerby Name: kerby-asn1 Version: 2.0.3 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -35405,36 +29826,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby ASN1 Project +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -350. Group: org.apache.kafka Name: kafka-tools-api Version: 7.5.0-ccs +306. Group: org.apache.kerby Name: kerby-config Version: 2.0.3 -POM Project URL: https://kafka.apache.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -35645,36 +30050,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). - -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby Config +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -351. Group: org.apache.kafka Name: kafka_2.13 Version: 7.4.0-ccs - -POM Project URL: https://kafka.apache.org +307. Group: org.apache.kerby Name: kerby-pkix Version: 2.0.3 -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -35885,36 +30274,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +Kerby PKIX Project +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -352. Group: org.apache.kafka Name: kafka_2.13 Version: 7.5.0-ccs +308. Group: org.apache.kerby Name: kerby-util Version: 2.0.3 -POM Project URL: https://kafka.apache.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -36125,34 +30498,20 @@ Embedded license: **************************************** -Apache Kafka -Copyright 2023 The Apache Software Foundation. -This product includes software developed at -The Apache Software Foundation (https://www.apache.org/). +Kerby Util +Copyright 2014-2022 The Apache Software Foundation -This distribution has a binary dependency on jersey, which is available under the CDDL -License. The source code of jersey can be found at https://github.com/jersey/jersey/. +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -This distribution has a binary test dependency on jqwik, which is available under -the Eclipse Public License 2.0. The source code can be found at -https://github.com/jlink/jqwik. -The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: -Copyright (C) 2018 Lightbend Inc. -Copyright (C) 2017-2018 Alexis Seigneurin. -This project contains the following code copied from Apache Hadoop: -clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java -Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. - -This project contains the following code copied from Apache Hive: -streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java -------------------------------------------------------------------------------- -353. Group: org.apache.kerby Name: kerb-admin Version: 1.0.1 +309. Group: org.apache.kerby Name: kerby-xdr Version: 2.0.3 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -36364,8 +30723,8 @@ Embedded license: **************************************** -Kerby-kerb Admin -Copyright 2014-2017 The Apache Software Foundation +Kerby XDR Project +Copyright 2014-2022 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -36374,9 +30733,9 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -354. Group: org.apache.kerby Name: kerb-client Version: 1.0.1 +310. Group: org.apache.kerby Name: token-provider Version: 2.0.3 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -36588,8 +30947,8 @@ Embedded license: **************************************** -Kerby-kerb Client -Copyright 2014-2017 The Apache Software Foundation +Token provider +Copyright 2014-2022 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -36598,7 +30957,9 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -355. Group: org.apache.kerby Name: kerb-common Version: 1.0.1 +311. Group: org.apache.logging.log4j Name: log4j-api Version: 2.17.1 + +Manifest Project URL: https://www.apache.org/ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -36812,8 +31173,8 @@ Embedded license: **************************************** -Kerby-kerb Common -Copyright 2014-2017 The Apache Software Foundation +Apache Log4j API +Copyright 1999-1969 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -36822,9 +31183,235 @@ The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- -356. Group: org.apache.kerby Name: kerb-core Version: 1.0.1 +312. Group: org.apache.logging.log4j Name: log4j-api Version: 2.23.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + **************************************** + +Apache Log4j API +Copyright 1999-2024 The Apache Software Foundation + + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +-------------------------------------------------------------------------------- + +313. Group: org.apache.logging.log4j Name: log4j-api Version: 2.23.1 + +Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -37035,18 +31622,18 @@ Embedded license: **************************************** +Apache Log4j API +Copyright 1999-2024 The Apache Software Foundation -Kerby-kerb core -Copyright 2014-2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). - - -------------------------------------------------------------------------------- -357. Group: org.apache.kerby Name: kerb-crypto Version: 1.0.1 +314. Group: org.apache.logging.log4j Name: log4j-core Version: 2.17.1 + +Manifest Project URL: https://www.apache.org/ POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt @@ -37243,7 +31830,7 @@ Embedded license: same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 1999-2005 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37259,20 +31846,21 @@ Embedded license: **************************************** - -Kerby-kerb Crypto -Copyright 2014-2017 The Apache Software Foundation +Apache Log4j Core +Copyright 1999-2012 Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). - - +ResolverUtil.java +Copyright 2005-2006 Tim Fennell -------------------------------------------------------------------------------- -358. Group: org.apache.kerby Name: kerb-identity Version: 1.0.1 +315. Group: org.apache.logging.log4j Name: log4j-core Version: 2.23.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -37467,7 +32055,7 @@ Embedded license: same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 1999-2005 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37483,20 +32071,246 @@ Embedded license: **************************************** - -Kerby-kerb Identity -Copyright 2014-2017 The Apache Software Foundation +Apache Log4j Core +Copyright 1999-2012 Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +ResolverUtil.java +Copyright 2005-2006 Tim Fennell +-------------------------------------------------------------------------------- + +316. Group: org.apache.logging.log4j Name: log4j-core Version: 2.23.1 + +Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 1999-2005 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + **************************************** + +Apache Log4j Core +Copyright 1999-2012 Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +ResolverUtil.java +Copyright 2005-2006 Tim Fennell -------------------------------------------------------------------------------- -359. Group: org.apache.kerby Name: kerb-server Version: 1.0.1 +317. Group: org.apache.logging.log4j Name: log4j-slf4j2-impl Version: 2.23.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -37707,20 +32521,20 @@ Embedded license: **************************************** +Apache Log4j SLF4J 2.0 Binding +Copyright 1999-2024 The Apache Software Foundation -Kerby-kerb Server -Copyright 2014-2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). - - -------------------------------------------------------------------------------- -360. Group: org.apache.kerby Name: kerb-simplekdc Version: 1.0.1 +318. Group: org.apache.logging.log4j Name: log4j-slf4j2-impl Version: 2.23.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -37931,20 +32745,18 @@ Embedded license: **************************************** +Apache Log4j SLF4J 2.0 Binding +Copyright 1999-2024 The Apache Software Foundation -Kerb Simple Kdc -Copyright 2014-2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). - - -------------------------------------------------------------------------------- -361. Group: org.apache.kerby Name: kerb-util Version: 1.0.1 +319. Group: org.apache.lucene Name: lucene-analyzers-common Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -38153,22 +32965,528 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: + +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + + +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/2.4.2/license/ + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/3.1.2/license/ + +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + **************************************** +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces + +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others + +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. + +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ + +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. + +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) + +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ + +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html + +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. + +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. + +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. + +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) + +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php + +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ipadic-2.7.0-20070801 + +which can be obtained from + + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + +or + + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== + +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. + +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. + +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. + +NO WARRANTY + +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. + +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. + +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. + +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. + +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== -Kerby-kerb Util -Copyright 2014-2017 The Apache Software Foundation +This software includes a binary and/or source version of data from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + mecab-ko-dic-2.0.3-20170922 +which can be obtained from + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -362. Group: org.apache.kerby Name: kerby-asn1 Version: 1.0.1 +320. Group: org.apache.lucene Name: lucene-backward-codecs Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -38377,22 +33695,528 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: + +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + + +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/2.4.2/license/ + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/3.1.2/license/ + +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + **************************************** +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces + +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others + +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. + +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ + +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. + +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) + +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ + +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html + +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. + +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. + +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. + +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) + +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php + +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ipadic-2.7.0-20070801 + +which can be obtained from + + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + +or + + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== + +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. + +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. + +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. + +NO WARRANTY + +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. + +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. + +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. + +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. + +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== -Kerby ASN1 Project -Copyright 2014-2017 The Apache Software Foundation +This software includes a binary and/or source version of data from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + mecab-ko-dic-2.0.3-20170922 +which can be obtained from + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -363. Group: org.apache.kerby Name: kerby-config Version: 1.0.1 +321. Group: org.apache.lucene Name: lucene-core Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -38601,22 +34425,528 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: + +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + + +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/2.4.2/license/ + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/3.1.2/license/ + +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + **************************************** +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces + +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others + +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. + +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ + +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. + +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) + +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ + +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html + +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. + +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. + +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. + +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) + +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php + +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ipadic-2.7.0-20070801 + +which can be obtained from + + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + +or + + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== + +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. + +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. + +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. + +NO WARRANTY + +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. + +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. + +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. + +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. + +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== -Kerby Config -Copyright 2014-2017 The Apache Software Foundation +This software includes a binary and/or source version of data from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + mecab-ko-dic-2.0.3-20170922 +which can be obtained from + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -364. Group: org.apache.kerby Name: kerby-pkix Version: 1.0.1 +322. Group: org.apache.lucene Name: lucene-grouping Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -38825,22 +35155,528 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** -Kerby PKIX Project -Copyright 2014-2017 The Apache Software Foundation +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: + +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + + +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/2.4.2/license/ + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/3.1.2/license/ + +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + **************************************** + +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces + +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others + +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. + +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ + +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. + +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) + +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ + +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html + +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. + +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. + +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. + +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) + +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php + +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ipadic-2.7.0-20070801 + +which can be obtained from + + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + +or + + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== + +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. + +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. + +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. + +NO WARRANTY + +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. + +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. + +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. + +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. + +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + mecab-ko-dic-2.0.3-20170922 +which can be obtained from + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -365. Group: org.apache.kerby Name: kerby-util Version: 1.0.1 +323. Group: org.apache.lucene Name: lucene-highlighter Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -39049,22 +35885,528 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** -Kerby Util -Copyright 2014-2017 The Apache Software Foundation +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: + +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + + +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/2.4.2/license/ + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/3.1.2/license/ + +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + **************************************** + +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces + +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others + +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. + +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ + +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. + +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) + +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ + +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html + +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. + +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. + +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. + +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) + +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php + +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ipadic-2.7.0-20070801 + +which can be obtained from + + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + +or + + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== + +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. + +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. + +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. + +NO WARRANTY + +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. + +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. + +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. + +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. + +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + mecab-ko-dic-2.0.3-20170922 +which can be obtained from + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -366. Group: org.apache.kerby Name: kerby-xdr Version: 1.0.1 +324. Group: org.apache.lucene Name: lucene-join Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -39265,30 +36607,536 @@ Embedded license: you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: + +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + + +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/2.4.2/license/ + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/3.1.2/license/ + +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + **************************************** + +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces + +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others + +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. + +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ + +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. + +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) + +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ + +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html + +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. + +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. + +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. + +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) + +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php + +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ipadic-2.7.0-20070801 + +which can be obtained from + + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + +or + + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== + +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. + +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. + +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. + +NO WARRANTY + +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. + +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. - **************************************** +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== -Kerby XDR Project -Copyright 2014-2017 The Apache Software Foundation +This software includes a binary and/or source version of data from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + mecab-ko-dic-2.0.3-20170922 +which can be obtained from + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -367. Group: org.apache.kerby Name: token-provider Version: 1.0.1 +325. Group: org.apache.lucene Name: lucene-memory Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -39470,51 +37318,555 @@ Embedded license: incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: + +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + + +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/2.4.2/license/ + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: + + http://www.python.org/download/releases/3.1.2/license/ + +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + **************************************** + +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces + +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others + +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. + +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ + +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. + +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) + +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ + +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html + +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. + +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. + +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. + +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) + +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php + +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ipadic-2.7.0-20070801 + +which can be obtained from + + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + +or + + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== + +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. - APPENDIX: How to apply the Apache License to your work. +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. - Copyright [yyyy] [name of copyright owner] +NO WARRANTY - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. - http://www.apache.org/licenses/LICENSE-2.0 +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. - **************************************** +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== -Token provider -Copyright 2014-2017 The Apache Software Foundation +This software includes a binary and/or source version of data from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + mecab-ko-dic-2.0.3-20170922 +which can be obtained from + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -368. Group: org.apache.logging.log4j Name: log4j-api Version: 2.17.1 - -Manifest Project URL: https://www.apache.org/ +326. Group: org.apache.lucene Name: lucene-misc Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -39723,248 +38075,528 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** -Apache Log4j API -Copyright 1999-1969 The Apache Software Foundation +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: --------------------------------------------------------------------------------- + http://www.python.org/download/releases/2.4.2/license/ -369. Group: org.apache.logging.log4j Name: log4j-api Version: 2.21.1 +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: -Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) + http://www.python.org/download/releases/3.1.2/license/ -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: + +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: + +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html + +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: + +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following license applies to the KStemmer: + +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. + +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. + +--- + +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. + +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ + +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Embedded license: **************************************** +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces - 1. Definitions. +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ + +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. + +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. + +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. + +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +This software includes a binary and/or source version of data from - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. + mecab-ipadic-2.7.0-20070801 - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +which can be obtained from - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +or - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. - END OF TERMS AND CONDITIONS +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. - APPENDIX: How to apply the Apache License to your work. +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +NO WARRANTY - Copyright [yyyy] [name of copyright owner] +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. - http://www.apache.org/licenses/LICENSE-2.0 +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. - **************************************** +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== -Apache Log4j API -Copyright 1999-2023 The Apache Software Foundation +This software includes a binary and/or source version of data from + + mecab-ko-dic-2.0.3-20170922 +which can be obtained from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -370. Group: org.apache.logging.log4j Name: log4j-core Version: 2.17.1 - -Manifest Project URL: https://www.apache.org/ +327. Group: org.apache.lucene Name: lucene-queries Version: 8.10.1 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -40159,7 +38791,7 @@ Embedded license: same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 1999-2005 The Apache Software Foundation + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -40173,468 +38805,526 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - **************************************** -Apache Log4j Core -Copyright 1999-2012 Apache Software Foundation -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from unicode conversion examples available at +http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright +from those sources: -ResolverUtil.java -Copyright 2005-2006 Tim Fennell --------------------------------------------------------------------------------- +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ -371. Group: org.apache.logging.log4j Name: log4j-core Version: 2.21.1 -Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) +Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was +derived from Python 2.4.2 sources available at +http://www.python.org. Full license is here: -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + http://www.python.org/download/releases/2.4.2/license/ -Embedded license: +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from Python 3.1.2 sources available at +http://www.python.org. Full license is here: - **************************************** + http://www.python.org/download/releases/3.1.2/license/ +Some code in core/src/java/org/apache/lucene/util/automaton was +derived from Brics automaton sources available at +www.brics.dk/automaton/. Here is the copyright from those sources: - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +/* + * Copyright (c) 2001-2009 Anders Moeller + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton +were automatically generated with the moman/finenight FSA package. +Here is the copyright for those sources: - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. - 1. Definitions. +Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was +derived from ICU (http://www.icu-project.org) +The full license is available here: + http://source.icu-project.org/repos/icu/icu/trunk/license.html - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +/* + * Copyright (C) 1999-2010, International Business Machines + * Corporation and others. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +The following license applies to the Snowball stemmers: - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +Copyright (c) 2001, Dr Martin Porter +Copyright (c) 2002, Richard Boulton +All rights reserved. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holders nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +The following license applies to the KStemmer: - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +Copyright © 2003, +Center for Intelligent Information Retrieval, +University of Massachusetts, Amherst. +All rights reserved. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +3. The names "Center for Intelligent Information Retrieval" and +"University of Massachusetts" must not be used to endorse or promote products +derived from this software without prior written permission. To obtain +permission, contact info@ciir.cs.umass.edu. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The following license applies to the Morfologik project: + +Copyright (c) 2006 Dawid Weiss +Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Morfologik nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +--- - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +The dictionary comes from Morfologik project. Morfologik uses data from +Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and +is licenced on the terms of (inter alia) LGPL and Creative Commons +ShareAlike. The part-of-speech tags were added in Morfologik project and +are not found in the data from sjp.pl. The tagset is similar to IPI PAN +tagset. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +--- - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +The following license applies to the Morfeusz project, +used by org.apache.lucene.analysis.morfologik. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +BSD-licensed dictionary of Polish (SGJP) +http://sgjp.pl/morfeusz/ - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, +Marcin Woliński, Robert Wołosz - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. +All rights reserved. - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - END OF TERMS AND CONDITIONS +--- - APPENDIX: How to apply the Apache License to your work. +core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java +implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) +compression format for Lucene's DataInput/DataOutput abstractions. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. - Copyright 1999-2005 The Apache Software Foundation +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - http://www.apache.org/licenses/LICENSE-2.0 +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. **************************************** -Apache Log4j Core -Copyright 1999-2012 Apache Software Foundation +Apache Lucene +Copyright 2001-2021 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). -ResolverUtil.java -Copyright 2005-2006 Tim Fennell --------------------------------------------------------------------------------- - -372. Group: org.apache.logging.log4j Name: log4j-slf4j2-impl Version: 2.21.1 +Includes software from other Apache Software Foundation projects, +including, but not limited to: + - Apache Ant + - Apache Jakarta Regexp + - Apache Commons + - Apache Xerces -Manifest License: "Apache-2.0";link="https://www.apache.org/licenses/LICENSE-2.0.txt" (Not packaged) +ICU4J, (under analysis/icu) is licensed under an MIT styles license +and Copyright (c) 1995-2008 International Business Machines Corporation and others -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +Some data files (under analysis/icu/src/data) are derived from Unicode data such +as the Unicode Character Database. See http://unicode.org/copyright.html for more +details. -Embedded license: +Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is +BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ - **************************************** +The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were +automatically generated with the moman/finenight FSA library, created by +Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, +see http://sites.google.com/site/rrettesite/moman and +http://bitbucket.org/jpbarrette/moman/overview/ +The class org.apache.lucene.util.WeakIdentityMap was derived from +the Apache CXF project and is Apache License 2.0. - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 +compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed +under the 2-clause BSD license. +(https://opensource.org/licenses/bsd-license.php) - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +The Google Code Prettify is Apache License 2.0. +See http://code.google.com/p/google-code-prettify/ - 1. Definitions. +JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 +See http://junit.sourceforge.net/cpl-v10.html - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin +g Package (jaspell): http://jaspell.sourceforge.net/ +License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +The snowball stemmers in + analysis/common/src/java/net/sf/snowball +were developed by Martin Porter and Richard Boulton. +The snowball stopword lists in + analysis/common/src/resources/org/apache/lucene/analysis/snowball +were developed by Martin Porter and Richard Boulton. +The full snowball package is available from + http://snowball.tartarus.org/ - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +The KStem stemmer in + analysis/common/src/org/apache/lucene/analysis/en +was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) +under the BSD-license. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default +stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: +analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, +analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt +See http://members.unine.ch/jacques.savoy/clef/index.html. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers +(common) are based on BSD-licensed reference implementations created by Jacques Savoy and +Ljiljana Dolamic. These files reside in: +analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java +analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +The Stempel analyzer (stempel) includes BSD-licensed software developed +by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, +and Edmond Nolan. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +The Polish analyzer (stempel) comes with a default +stopword list that is BSD-licensed created by the Carrot2 project. The file resides +in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. +See http://project.carrot2.org/license.html. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +The SmartChineseAnalyzer source code (smartcn) was +provided by Xiaoping Gao and copyright 2009 by www.imdict.net. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) +is derived from Unicode data such as the Unicode Character Database. +See http://unicode.org/copyright.html for more details. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +The Morfologik analyzer (morfologik) includes BSD-licensed software +developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +Morfologik uses data from Polish ispell/myspell dictionary +(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) +LGPL and Creative Commons ShareAlike. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) +(http://sgjp.pl/morfeusz/) - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original +source code for this can be found at http://www.eclipse.org/jetty/downloads.php - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +=========================================================================== +Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration +=========================================================================== - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +This software includes a binary and/or source version of data from - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + mecab-ipadic-2.7.0-20070801 - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +which can be obtained from - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. + http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. +or - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. + http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +=========================================================================== +mecab-ipadic-2.7.0-20070801 Notice +=========================================================================== - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +Nara Institute of Science and Technology (NAIST), +the copyright holders, disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness, in no event shall NAIST be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortuous action, arising out +of or in connection with the use or performance of this software. - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +A large portion of the dictionary entries +originate from ICOT Free Software. The following conditions for ICOT +Free Software applies to the current dictionary as well. - END OF TERMS AND CONDITIONS +Each User may also freely distribute the Program, whether in its +original form or modified, to any third party or parties, PROVIDED +that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear +on, or be attached to, the Program, which is distributed substantially +in the same form as set out herein and that such intended +distribution, if actually made, will neither violate or otherwise +contravene any of the laws and regulations of the countries having +jurisdiction over the User or the intended distribution itself. - APPENDIX: How to apply the Apache License to your work. +NO WARRANTY - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided +to users as so produced on an experimental basis. Accordingly, the +program is provided without any warranty whatsoever, whether express, +implied, statutory or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, +performance, merchantability and fitness for a particular purpose of +the program and the nonexistence of any infringement or violation of +any right of any third party. - Copyright [yyyy] [name of copyright owner] +Each user of the program will agree and understand, and be deemed to +have agreed and understood, that there is no warranty whatsoever for +the program and, accordingly, the entire risk arising from or +otherwise connected with the program is assumed by the user. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Therefore, neither ICOT, the copyright holder, or any other +organization that participated in or was otherwise related to the +development of the program and their respective officials, directors, +officers and other employees shall be held liable for any and all +damages, including, without limitation, general, special, incidental +and consequential damages, arising out of or otherwise in connection +with the use or inability to use the program or any product, material +or result produced or otherwise obtained by using the program, +regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the +project or thereafter. Each user will be deemed to have agreed to the +foregoing by his or her commencement of use of the program. The term +"use" as used herein includes, but is not limited to, the use, +modification, copying and distribution of the program and the +production of secondary products from the program. - http://www.apache.org/licenses/LICENSE-2.0 +In the case where the program, whether in its original form or +modified, was distributed or delivered to or received by a user from +any person, organization or entity other than ICOT, unless it makes or +grants independently of ICOT any specific warranty to the user in +writing, such person, organization or entity, will also be exempted +from and not be held liable to the user for any such damages as noted +above as far as the program is concerned. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== - **************************************** +This software includes a binary and/or source version of data from -Apache Log4j SLF4J 2.0 Binding -Copyright 1999-2023 The Apache Software Foundation + mecab-ko-dic-2.0.3-20170922 +which can be obtained from -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -373. Group: org.apache.lucene Name: lucene-analyzers-common Version: 8.10.1 +328. Group: org.apache.lucene Name: lucene-queryparser Version: 8.10.1 POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -41364,7 +40054,7 @@ which can be obtained from -------------------------------------------------------------------------------- -374. Group: org.apache.lucene Name: lucene-backward-codecs Version: 8.10.1 +329. Group: org.apache.lucene Name: lucene-sandbox Version: 8.10.1 POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -42094,7 +40784,7 @@ which can be obtained from -------------------------------------------------------------------------------- -375. Group: org.apache.lucene Name: lucene-core Version: 8.10.1 +330. Group: org.apache.lucene Name: lucene-spatial-extras Version: 8.10.1 POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -42824,7 +41514,7 @@ which can be obtained from -------------------------------------------------------------------------------- -376. Group: org.apache.lucene Name: lucene-grouping Version: 8.10.1 +331. Group: org.apache.lucene Name: lucene-spatial3d Version: 8.10.1 POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -43554,7 +42244,7 @@ which can be obtained from -------------------------------------------------------------------------------- -377. Group: org.apache.lucene Name: lucene-highlighter Version: 8.10.1 +332. Group: org.apache.lucene Name: lucene-suggest Version: 8.10.1 POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -44270,23 +42960,471 @@ writing, such person, organization or entity, will also be exempted from and not be held liable to the user for any such damages as noted above as far as the program is concerned. -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== +=========================================================================== +Nori Korean Morphological Analyzer - Apache Lucene Integration +=========================================================================== + +This software includes a binary and/or source version of data from + + mecab-ko-dic-2.0.3-20170922 + +which can be obtained from + + https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz + +-------------------------------------------------------------------------------- + +333. Group: org.apache.maven Name: maven-artifact Version: 3.9.8 + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + **************************************** + +Maven Artifact +Copyright 2001-2024 The Apache Software Foundation + + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +-------------------------------------------------------------------------------- + +334. Group: org.apache.parquet Name: parquet-avro Version: 1.14.1 + +POM Project URL: https://parquet.apache.org + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +Embedded license: + + **************************************** + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +-------------------------------------------------------------------------------- + +This product includes code from Apache Avro. + +Copyright: 2014 The Apache Software Foundation. +Home page: https://avro.apache.org/ +License: http://www.apache.org/licenses/LICENSE-2.0 + + + **************************************** + + +Apache Parquet MR (Incubating) +Copyright 2014-2015 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). -This software includes a binary and/or source version of data from +-------------------------------------------------------------------------------- - mecab-ko-dic-2.0.3-20170922 +This product includes code from Apache Avro, which includes the following in +its NOTICE file: -which can be obtained from + Apache Avro + Copyright 2010-2015 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (http://www.apache.org/). - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz -------------------------------------------------------------------------------- -378. Group: org.apache.lucene Name: lucene-join Version: 8.10.1 +335. Group: org.apache.parquet Name: parquet-column Version: 1.14.1 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://parquet.apache.org + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -44470,553 +43608,249 @@ Embedded license: END OF TERMS AND CONDITIONS - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: - -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - - -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/2.4.2/license/ - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/3.1.2/license/ - -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: - -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: - -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html - -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: - -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The following license applies to the KStemmer: - -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. - -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - -The following license applies to the Morfologik project: - -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ---- - -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. - ---- - -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. - -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ +-------------------------------------------------------------------------------- -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz +This product depends on fastutil and includes it in this binary artifact. +Fastutil provides type-specific collection implementations. -All rights reserved. +Copyright: 2002-2014 Sebastiano Vigna +Home page: http://fasutil.di.unimi.it/ +License: http://www.apache.org/licenses/LICENSE-2.0.html -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +-------------------------------------------------------------------------------- -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. +336. Group: org.apache.parquet Name: parquet-common Version: 1.14.1 -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +POM Project URL: https://parquet.apache.org ---- +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +-------------------------------------------------------------------------------- -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +337. Group: org.apache.parquet Name: parquet-encoding Version: 1.14.1 -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +POM Project URL: https://parquet.apache.org -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +Embedded license: **************************************** -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces - -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others - -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. - -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ - -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ + 1. Definitions. -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -This software includes a binary and/or source version of data from + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - mecab-ipadic-2.7.0-20070801 + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -which can be obtained from + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -or + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. + END OF TERMS AND CONDITIONS -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. +-------------------------------------------------------------------------------- -NO WARRANTY +This project includes code from Daniel Lemire's JavaFastPFOR project in this +binary artifact. The "Lemire" bit packing classes produced by parquet-generator +are derived from the JavaFastPFOR project. -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +Copyright: 2013 Daniel Lemire +Home page: http://lemire.me/en/ +Project page: https://github.com/lemire/JavaFastPFOR +License: Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +-------------------------------------------------------------------------------- -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. +338. Group: org.apache.parquet Name: parquet-format-structures Version: 1.14.1 -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== +POM Project URL: https://parquet.apache.org/ -This software includes a binary and/or source version of data from +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - mecab-ko-dic-2.0.3-20170922 +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -which can be obtained from +-------------------------------------------------------------------------------- - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +339. Group: org.apache.parquet Name: parquet-hadoop Version: 1.14.1 --------------------------------------------------------------------------------- +POM Project URL: https://parquet.apache.org -379. Group: org.apache.lucene Name: lucene-memory Version: 8.10.1 +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -45200,553 +44034,360 @@ Embedded license: END OF TERMS AND CONDITIONS - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: +-------------------------------------------------------------------------------- -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ +This product includes code from Twitter's ElephantBird project. +* parquet-hadoop's UnmaterializableRecordCounter.java includes code from + ElephantBird's LzoRecordReader.java -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: +Copyright: 2012-2014 Twitter +Home page: https://github.com/twitter/elephant-bird +License: http://www.apache.org/licenses/LICENSE-2.0 - http://www.python.org/download/releases/2.4.2/license/ -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: +-------------------------------------------------------------------------------- - http://www.python.org/download/releases/3.1.2/license/ +340. Group: org.apache.parquet Name: parquet-jackson Version: 1.14.1 -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: +POM Project URL: https://parquet.apache.org -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html +Embedded license: -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: + **************************************** -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + 1. Definitions. -The following license applies to the KStemmer: + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -The following license applies to the Morfologik project: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. ---- + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and ---- + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -All rights reserved. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. ---- + END OF TERMS AND CONDITIONS -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +-------------------------------------------------------------------------------- -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +This product depends on Jackson and includes it in this binary artifact. +Jackson is a high-performance JSON processor. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Copyright: 2007-2015 Tatu Saloranta and other contributors +Home page: http://jackson.codehaus.org/ +License: http://www.apache.org/licenses/LICENSE-2.0.txt -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. + **************************************** -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Jackson JSON processor +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. - **************************************** +## Copyright -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +## Licensing -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others +## Credits -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ +## FastDoubleParser -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ +jackson-core bundles a shaded copy of FastDoubleParser . +That code is available under an MIT license +under the following copyright. -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ +-------------------------------------------------------------------------------- -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html +341. Group: org.bouncycastle Name: bcpkix-jdk18on Version: 1.78.1 -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) +POM Project URL: https://www.bouncycastle.org/java.html -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ +POM License: Bouncy Castle Licence - https://www.bouncycastle.org/licence.html -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. +-------------------------------------------------------------------------------- -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. +342. Group: org.bouncycastle Name: bcprov-jdk18on Version: 1.78.1 -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java +POM Project URL: https://www.bouncycastle.org/java.html -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. +POM License: Bouncy Castle Licence - https://www.bouncycastle.org/licence.html -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. +-------------------------------------------------------------------------------- -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. +343. Group: org.bouncycastle Name: bcutil-jdk18on Version: 1.78.1 -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. +POM Project URL: https://www.bouncycastle.org/java.html -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). +POM License: Bouncy Castle Licence - https://www.bouncycastle.org/licence.html -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. +-------------------------------------------------------------------------------- -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) +344. Group: org.checkerframework Name: checker-qual Version: 3.33.0 -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php +Manifest License: MIT (Not packaged) -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== +POM Project URL: https://checkerframework.org/ -This software includes a binary and/or source version of data from +POM License: The MIT License - http://opensource.org/licenses/MIT - mecab-ipadic-2.7.0-20070801 +Embedded license: -which can be obtained from + **************************************** - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz +Checker Framework qualifiers +Copyright 2004-present by the Checker Framework developers -or +MIT License: - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. +-------------------------------------------------------------------------------- -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. +345. Group: org.checkerframework Name: checker-qual Version: 3.37.0 -NO WARRANTY +Manifest License: MIT (Not packaged) -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +POM Project URL: https://checkerframework.org/ -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. +POM License: The MIT License - http://opensource.org/licenses/MIT -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +Embedded license: -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. + **************************************** -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== +Checker Framework qualifiers +Copyright 2004-present by the Checker Framework developers -This software includes a binary and/or source version of data from +MIT License: - mecab-ko-dic-2.0.3-20170922 +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -which can be obtained from +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -------------------------------------------------------------------------------- -380. Group: org.apache.lucene Name: lucene-misc Version: 8.10.1 +346. Group: org.codehaus.jettison Name: jettison Version: 1.5.4 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://github.com/jettison-json/jettison + +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 Embedded license: @@ -45930,18 +44571,7 @@ Embedded license: END OF TERMS AND CONDITIONS - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] + Copyright 2006 Envoi Solutions LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -45956,531 +44586,500 @@ Embedded license: limitations under the License. +-------------------------------------------------------------------------------- -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: +347. Group: org.codehaus.mojo Name: animal-sniffer-annotations Version: 1.23 -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ +POM License: MIT license - https://spdx.org/licenses/MIT.txt +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: +-------------------------------------------------------------------------------- - http://www.python.org/download/releases/2.4.2/license/ +348. Group: org.codehaus.woodstox Name: stax2-api Version: 4.2.1 -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: +Project URL: http://github.com/FasterXML/stax2-api - http://www.python.org/download/releases/3.1.2/license/ +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: +POM License: The BSD License - http://www.opensource.org/licenses/bsd-license.php -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: +Embedded license: -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. + **************************************** + +This copy of Stax2 API is licensed under the +Simplified BSD License (also known as "2-clause BSD", or "FreeBSD License") +See the License for details about distribution rights, and the +specific rights regarding derivate works. + +You may obtain a copy of the License at: + +http://www.opensource.org/licenses/bsd-license.php + +with details of: + + = FasterXML.com + = 2010- + +-------------------------------------------------------------------------------- + +349. Group: org.codehaus.woodstox Name: stax2-api Version: 4.2.2 + +Project URL: http://github.com/FasterXML/stax2-api + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +POM License: The BSD 2-Clause License - http://www.opensource.org/licenses/bsd-license.php + +Embedded license: + + **************************************** + +This copy of Stax2 API is licensed under the +Simplified BSD License (also known as "2-clause BSD", or "FreeBSD License") +See the License for details about distribution rights, and the +specific rights regarding derivate works. -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html +You may obtain a copy of the License at: -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: +http://www.opensource.org/licenses/bsd-license.php -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. +with details of: -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: + = FasterXML.com + = 2010- - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. +-------------------------------------------------------------------------------- -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +350. Group: org.curioswitch.curiostack Name: protobuf-jackson Version: 2.5.0 -The following license applies to the KStemmer: +POM Project URL: https://github.com/curioswitch/protobuf-jackson -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. +POM License: MIT License - https://opensource.org/licenses/MIT -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +-------------------------------------------------------------------------------- -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +351. Group: org.eclipse Name: yasson Version: 2.0.2 -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. +Manifest Project URL: http://www.oracle.com/ -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. +POM Project URL: https://projects.eclipse.org/projects/ee4j.yasson -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. +POM License: Eclipse Distribution License v. 1.0 - http://www.eclipse.org/org/documents/edl-v10.php -The following license applies to the Morfologik project: +POM License: Eclipse Public License v. 2.0 - http://www.eclipse.org/legal/epl-v20.html -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. +POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Embedded license: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. + **************************************** + +# Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + 1. DEFINITIONS - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. + “Contribution” means: - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. + a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works. + + “Contributor” means any person or entity that Distributes the Program. + + “Licensed Patents” mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + + “Program” means the Contributions Distributed in accordance with this Agreement. + + “Recipient” means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors. + + “Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. + + “Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof. + + “Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy. + + “Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files. + + “Secondary License” means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor. + 2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works. + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. + e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3). + + 3. REQUIREMENTS + + 3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and + b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; + iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and + iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3. + + 3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and + b) a copy of this Agreement must be included with each copy of the Program. + + 3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (‘notices’) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices. + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify every other Contributor (“Indemnified Contributor”) against any losses, damages and costs (collectively “Losses”) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + + For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. + + Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version. + + Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement. + Exhibit A – Form of Secondary Licenses Notice + + “This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}.” + + Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. + + You may add additional accurate notices of copyright ownership. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---- +# Eclipse Distribution License - v 1.0 -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. + Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. ---- + All rights reserved. -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************** -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz +# Notices for Eclipse Yasson -All rights reserved. +This content is produced and maintained by the Eclipse Yasson project. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +* Project home: https://projects.eclipse.org/projects/ee4j.yasson -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +## Trademarks -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. +Eclipse Yasson is a trademark of the Eclipse Foundation. -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +## Copyright ---- +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +## Declared Project Licenses -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v. 2.0 which is available at +http://www.eclipse.org/legal/epl-v20.html, or the Eclipse Distribution License +v. 1.0 which is available at http://www.eclipse.org/org/documents/edl-v10.php. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +## Source Code -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. +The project maintains the following source code repositories: -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* https://github.com/eclipse/yasson +* https://github.com/eclipse-ee4j/yasson +## Third-party Content - **************************************** +cdi-api 2.0 (JSR 365: Contexts and Dependency Injection for Java (2.0) -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +## Cryptography -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. +-------------------------------------------------------------------------------- -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others +352. Group: org.eclipse.collections Name: eclipse-collections Version: 10.4.0 -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. +Manifest Project URL: https://github.com/eclipse/eclipse-collections/eclipse-collections -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ +Manifest License: "Eclipse Public License - v 1.0";link="https://www.eclipse.org/legal/epl-v10.html","Eclipse Distribution License - v 1.0";link="https://www.eclipse.org/licenses/edl-v10.html" (Not packaged) -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ +POM License: Eclipse Distribution License - v 1.0 - https://www.eclipse.org/licenses/edl-v10.html -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. +POM License: Eclipse Public License - v 1.0 - https://www.eclipse.org/legal/epl-v10.html -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) +-------------------------------------------------------------------------------- -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ +353. Group: org.eclipse.collections Name: eclipse-collections-api Version: 10.4.0 -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html +Manifest Project URL: https://github.com/eclipse/eclipse-collections/eclipse-collections-api -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) +Manifest License: "Eclipse Public License - v 1.0";link="https://www.eclipse.org/legal/epl-v10.html","Eclipse Distribution License - v 1.0";link="https://www.eclipse.org/licenses/edl-v10.html" (Not packaged) -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ +POM License: Eclipse Distribution License - v 1.0 - https://www.eclipse.org/licenses/edl-v10.html -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. +POM License: Eclipse Public License - v 1.0 - https://www.eclipse.org/legal/epl-v10.html -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. +-------------------------------------------------------------------------------- -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java +354. Group: org.eclipse.collections Name: eclipse-collections-forkjoin Version: 10.4.0 -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. +POM License: Eclipse Distribution License - v 1.0 - https://www.eclipse.org/licenses/edl-v10.html -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. +POM License: Eclipse Public License - v 1.0 - https://www.eclipse.org/legal/epl-v10.html -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. +-------------------------------------------------------------------------------- -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. +355. Group: org.eclipse.jetty.websocket Name: websocket-api Version: 9.4.53.v20231009 -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). +Manifest Project URL: https://eclipse.org/jetty -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. +POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) +POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php +Embedded license: -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== + **************************************** -This software includes a binary and/or source version of data from +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0, or the Apache Software License +2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - mecab-ipadic-2.7.0-20070801 -which can be obtained from - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz +Eclipse Public License - v 1.0 -or +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz +1. DEFINITIONS -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== +"Contribution" means: -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. +a) in the case of the initial Contributor, the initial code and documentation + distributed under this Agreement, and +b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' + from a Contributor if it was added to the Program by such Contributor + itself or anyone acting on such Contributor's behalf. Contributions do not + include additions to the Program which: (i) are separate modules of + software distributed in conjunction with the Program under their own + license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly + perform, distribute and sublicense the Contribution of such Contributor, + if any, and such derivative works, in source code and object code form. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code and + object code form. This patent license shall apply to the combination of + the Contribution and the Program if, at the time the Contribution is + added by the Contributor, such addition of the Contribution causes such + combination to be covered by the Licensed Patents. The patent license + shall not apply to any other combinations which include the Contribution. + No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other + entity based on infringement of intellectual property rights or + otherwise. As a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to secure + any other intellectual property rights needed, if any. For example, if a + third party patent license is required to allow Recipient to distribute + the Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. +When the Program is made available in source code form: -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. + a) it must be made available under this Agreement; and + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained + within the Program. -NO WARRANTY +Each Contributor must identify itself as the originator of its Contribution, +if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +4. COMMERCIAL DISTRIBUTION -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, +if a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits and +other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such Commercial +Contributor in connection with its distribution of the Program in a commercial +product offering. The obligations in this section do not apply to any claims +or Losses relating to any actual or alleged intellectual property +infringement. In order to qualify, an Indemnified Contributor must: +a) promptly notify the Commercial Contributor in writing of such claim, and +b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such claim at +its own expense. -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If +that Commercial Contributor then makes performance claims, or offers +warranties related to Product X, those performance claims and warranties are +such Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a +court requires any other Contributor to pay any damages as a result, the +Commercial Contributor must pay those damages. -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. +5. NO WARRANTY -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the +risks and costs of program errors, compliance with applicable laws, damage to +or loss of data, programs or equipment, and unavailability or interruption of +operations. -This software includes a binary and/or source version of data from +6. DISCLAIMER OF LIABILITY - mecab-ko-dic-2.0.3-20170922 +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION +LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES. -which can be obtained from +7. GENERAL - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of the +remainder of the terms of this Agreement, and without further action by the +parties hereto, such provision shall be reformed to the minimum extent +necessary to make such provision valid and enforceable. --------------------------------------------------------------------------------- +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted +under Section 2(b) shall terminate as of the date such litigation is filed. -381. Group: org.apache.lucene Name: lucene-queries Version: 8.10.1 +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to +time. No one other than the Agreement Steward has the right to modify this +Agreement. The Eclipse Foundation is the initial Agreement Steward. The +Eclipse Foundation may assign the responsibility to serve as the Agreement +Steward to a suitable separate entity. Each new version of the Agreement will +be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly +stated in Sections 2(a) and 2(b) above, Recipient receives no rights or +licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the +Program not expressly granted under this Agreement are reserved. -Embedded license: +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. - **************************************** Apache License @@ -46685,532 +45284,352 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + **************************************** +============================================================== + Jetty Web Container + Copyright 1995-2018 Mort Bay Consulting Pty Ltd. +============================================================== -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: - -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - - -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/2.4.2/license/ - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/3.1.2/license/ - -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: - -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: - -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html - -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: - -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The following license applies to the KStemmer: - -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd +unless otherwise noted. -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. +Jetty is dual licensed under both -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. + * The Apache 2.0 License + http://www.apache.org/licenses/LICENSE-2.0.html -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. + and -The following license applies to the Morfologik project: + * The Eclipse Public 1.0 License + http://www.eclipse.org/legal/epl-v10.html -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. +Jetty may be distributed under either license. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +------ +Eclipse - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +The following artifacts are EPL. + * org.eclipse.jetty.orbit:org.eclipse.jdt.core -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The following artifacts are EPL and ASL2. + * org.eclipse.jetty.orbit:javax.security.auth.message ---- -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. +The following artifacts are EPL and CDDL 1.0. + * org.eclipse.jetty.orbit:javax.mail.glassfish ---- -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. +------ +Oracle -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ +The following artifacts are CDDL + GPLv2 with classpath exception. +https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz + * javax.servlet:javax.servlet-api + * javax.annotation:javax.annotation-api + * javax.transaction:javax.transaction-api + * javax.websocket:javax.websocket-api -All rights reserved. +------ +Oracle OpenJDK -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +If ALPN is used to negotiate HTTP/2 connections, then the following +artifacts may be included in the distribution or downloaded when ALPN +module is selected. -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + * java.sun.security.ssl -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. +These artifacts replace/modify OpenJDK classes. The modififications +are hosted at github and both modified and original are under GPL v2 with +classpath exceptions. +http://openjdk.java.net/legal/gplv2+ce.html -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---- +------ +OW2 -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +The following artifacts are licensed by the OW2 Foundation according to the +terms of http://asm.ow2.org/license.html -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +org.ow2.asm:asm-commons +org.ow2.asm:asm -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +------ +Apache -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. +The following artifacts are ASL2 licensed. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +org.apache.taglibs:taglibs-standard-spec +org.apache.taglibs:taglibs-standard-impl - **************************************** +------ +MortBay -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation +The following artifacts are ASL2 licensed. Based on selected classes from +following Apache Tomcat jars, all ASL2 licensed. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +org.mortbay.jasper:apache-jsp + org.apache.tomcat:tomcat-jasper + org.apache.tomcat:tomcat-juli + org.apache.tomcat:tomcat-jsp-api + org.apache.tomcat:tomcat-el-api + org.apache.tomcat:tomcat-jasper-el + org.apache.tomcat:tomcat-api + org.apache.tomcat:tomcat-util-scan + org.apache.tomcat:tomcat-util -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces +org.mortbay.jasper:apache-el + org.apache.tomcat:tomcat-jasper-el + org.apache.tomcat:tomcat-el-api -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. +------ +Mortbay -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ +The following artifacts are CDDL + GPLv2 with classpath exception. -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ +https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. +org.eclipse.jetty.toolchain:jetty-schemas -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) +------ +Assorted -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ +The UnixCrypt.java code implements the one way cryptography used by +Unix systems for simple password protection. Copyright 1996 Aki Yoshida, +modified April 2001 by Iris Van den Broeke, Daniel Deville. +Permission to use, copy, modify and distribute UnixCrypt +for non-commercial or commercial purposes and without fee is +granted provided that the copyright notice appears in all copies. -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html +-------------------------------------------------------------------------------- -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) +356. Group: org.eclipse.jetty.websocket Name: websocket-client Version: 9.4.53.v20231009 -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ +Manifest Project URL: https://eclipse.org/jetty -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. +POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. +POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java +Embedded license: -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. + **************************************** -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0, or the Apache Software License +2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). +Eclipse Public License - v 1.0 -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) +1. DEFINITIONS -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php +"Contribution" means: -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== +a) in the case of the initial Contributor, the initial code and documentation + distributed under this Agreement, and +b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; -This software includes a binary and/or source version of data from + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' + from a Contributor if it was added to the Program by such Contributor + itself or anyone acting on such Contributor's behalf. Contributions do not + include additions to the Program which: (i) are separate modules of + software distributed in conjunction with the Program under their own + license agreement, and (ii) are not derivative works of the Program. - mecab-ipadic-2.7.0-20070801 +"Contributor" means any person or entity that distributes the Program. -which can be obtained from +"Licensed Patents" mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz +"Program" means the Contributions distributed in accordance with this +Agreement. -or +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz +2. GRANT OF RIGHTS + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly + perform, distribute and sublicense the Contribution of such Contributor, + if any, and such derivative works, in source code and object code form. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code and + object code form. This patent license shall apply to the combination of + the Contribution and the Program if, at the time the Contribution is + added by the Contributor, such addition of the Contribution causes such + combination to be covered by the Licensed Patents. The patent license + shall not apply to any other combinations which include the Contribution. + No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other + entity based on infringement of intellectual property rights or + otherwise. As a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to secure + any other intellectual property rights needed, if any. For example, if a + third party patent license is required to allow Recipient to distribute + the Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== +3. REQUIREMENTS -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. + a) it complies with the terms and conditions of this Agreement; and + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. +When the Program is made available in source code form: -NO WARRANTY + a) it must be made available under this Agreement; and + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained + within the Program. -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +Each Contributor must identify itself as the originator of its Contribution, +if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. +4. COMMERCIAL DISTRIBUTION -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, +if a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits and +other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such Commercial +Contributor in connection with its distribution of the Program in a commercial +product offering. The obligations in this section do not apply to any claims +or Losses relating to any actual or alleged intellectual property +infringement. In order to qualify, an Indemnified Contributor must: +a) promptly notify the Commercial Contributor in writing of such claim, and +b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such claim at +its own expense. -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If +that Commercial Contributor then makes performance claims, or offers +warranties related to Product X, those performance claims and warranties are +such Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a +court requires any other Contributor to pay any damages as a result, the +Commercial Contributor must pay those damages. -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== +5. NO WARRANTY -This software includes a binary and/or source version of data from +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the +risks and costs of program errors, compliance with applicable laws, damage to +or loss of data, programs or equipment, and unavailability or interruption of +operations. - mecab-ko-dic-2.0.3-20170922 +6. DISCLAIMER OF LIABILITY -which can be obtained from +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION +LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES. - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +7. GENERAL --------------------------------------------------------------------------------- +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of the +remainder of the terms of this Agreement, and without further action by the +parties hereto, such provision shall be reformed to the minimum extent +necessary to make such provision valid and enforceable. -382. Group: org.apache.lucene Name: lucene-queryparser Version: 8.10.1 +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted +under Section 2(b) shall terminate as of the date such litigation is filed. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. -Embedded license: +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to +time. No one other than the Agreement Steward has the right to modify this +Agreement. The Eclipse Foundation is the initial Agreement Steward. The +Eclipse Foundation may assign the responsibility to serve as the Agreement +Steward to a suitable separate entity. Each new version of the Agreement will +be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly +stated in Sections 2(a) and 2(b) above, Recipient receives no rights or +licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the +Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. - **************************************** Apache License @@ -47368,579 +45787,399 @@ Embedded license: 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: - -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - - -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/2.4.2/license/ - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/3.1.2/license/ - -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: - -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: - -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: + END OF TERMS AND CONDITIONS -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. + APPENDIX: How to apply the Apache License to your work. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + Copyright [yyyy] [name of copyright owner] -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -The following license applies to the KStemmer: + http://www.apache.org/licenses/LICENSE-2.0 -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + **************************************** -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +============================================================== + Jetty Web Container + Copyright 1995-2018 Mort Bay Consulting Pty Ltd. +============================================================== -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. +The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd +unless otherwise noted. -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. +Jetty is dual licensed under both -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. + * The Apache 2.0 License + http://www.apache.org/licenses/LICENSE-2.0.html -The following license applies to the Morfologik project: + and -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. + * The Eclipse Public 1.0 License + http://www.eclipse.org/legal/epl-v10.html -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Jetty may be distributed under either license. - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +------ +Eclipse -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The following artifacts are EPL. + * org.eclipse.jetty.orbit:org.eclipse.jdt.core ---- +The following artifacts are EPL and ASL2. + * org.eclipse.jetty.orbit:javax.security.auth.message -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. ---- +The following artifacts are EPL and CDDL 1.0. + * org.eclipse.jetty.orbit:javax.mail.glassfish -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ +------ +Oracle -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz +The following artifacts are CDDL + GPLv2 with classpath exception. +https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html -All rights reserved. + * javax.servlet:javax.servlet-api + * javax.annotation:javax.annotation-api + * javax.transaction:javax.transaction-api + * javax.websocket:javax.websocket-api -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +------ +Oracle OpenJDK -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +If ALPN is used to negotiate HTTP/2 connections, then the following +artifacts may be included in the distribution or downloaded when ALPN +module is selected. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. + * java.sun.security.ssl -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +These artifacts replace/modify OpenJDK classes. The modififications +are hosted at github and both modified and original are under GPL v2 with +classpath exceptions. +http://openjdk.java.net/legal/gplv2+ce.html ---- -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +------ +OW2 -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +The following artifacts are licensed by the OW2 Foundation according to the +terms of http://asm.ow2.org/license.html -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +org.ow2.asm:asm-commons +org.ow2.asm:asm -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. +------ +Apache -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The following artifacts are ASL2 licensed. + +org.apache.taglibs:taglibs-standard-spec +org.apache.taglibs:taglibs-standard-impl - **************************************** +------ +MortBay -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation +The following artifacts are ASL2 licensed. Based on selected classes from +following Apache Tomcat jars, all ASL2 licensed. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +org.mortbay.jasper:apache-jsp + org.apache.tomcat:tomcat-jasper + org.apache.tomcat:tomcat-juli + org.apache.tomcat:tomcat-jsp-api + org.apache.tomcat:tomcat-el-api + org.apache.tomcat:tomcat-jasper-el + org.apache.tomcat:tomcat-api + org.apache.tomcat:tomcat-util-scan + org.apache.tomcat:tomcat-util -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces +org.mortbay.jasper:apache-el + org.apache.tomcat:tomcat-jasper-el + org.apache.tomcat:tomcat-el-api -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. +------ +Mortbay -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ +The following artifacts are CDDL + GPLv2 with classpath exception. -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ +https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. +org.eclipse.jetty.toolchain:jetty-schemas -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) +------ +Assorted -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ +The UnixCrypt.java code implements the one way cryptography used by +Unix systems for simple password protection. Copyright 1996 Aki Yoshida, +modified April 2001 by Iris Van den Broeke, Daniel Deville. +Permission to use, copy, modify and distribute UnixCrypt +for non-commercial or commercial purposes and without fee is +granted provided that the copyright notice appears in all copies. -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html +-------------------------------------------------------------------------------- -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) +357. Group: org.eclipse.jetty.websocket Name: websocket-common Version: 9.4.53.v20231009 -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ +Manifest Project URL: https://eclipse.org/jetty -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. +POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. +POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java +Embedded license: -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. + **************************************** -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0, or the Apache Software License +2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). +Eclipse Public License - v 1.0 -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) +1. DEFINITIONS -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php +"Contribution" means: -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== +a) in the case of the initial Contributor, the initial code and documentation + distributed under this Agreement, and +b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; -This software includes a binary and/or source version of data from + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' + from a Contributor if it was added to the Program by such Contributor + itself or anyone acting on such Contributor's behalf. Contributions do not + include additions to the Program which: (i) are separate modules of + software distributed in conjunction with the Program under their own + license agreement, and (ii) are not derivative works of the Program. - mecab-ipadic-2.7.0-20070801 +"Contributor" means any person or entity that distributes the Program. -which can be obtained from +"Licensed Patents" mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz +"Program" means the Contributions distributed in accordance with this +Agreement. -or +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz +2. GRANT OF RIGHTS + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly + perform, distribute and sublicense the Contribution of such Contributor, + if any, and such derivative works, in source code and object code form. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code and + object code form. This patent license shall apply to the combination of + the Contribution and the Program if, at the time the Contribution is + added by the Contributor, such addition of the Contribution causes such + combination to be covered by the Licensed Patents. The patent license + shall not apply to any other combinations which include the Contribution. + No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other + entity based on infringement of intellectual property rights or + otherwise. As a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to secure + any other intellectual property rights needed, if any. For example, if a + third party patent license is required to allow Recipient to distribute + the Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== +3. REQUIREMENTS -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. + a) it complies with the terms and conditions of this Agreement; and + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. +When the Program is made available in source code form: -NO WARRANTY + a) it must be made available under this Agreement; and + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained + within the Program. -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +Each Contributor must identify itself as the originator of its Contribution, +if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. +4. COMMERCIAL DISTRIBUTION -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, +if a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits and +other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such Commercial +Contributor in connection with its distribution of the Program in a commercial +product offering. The obligations in this section do not apply to any claims +or Losses relating to any actual or alleged intellectual property +infringement. In order to qualify, an Indemnified Contributor must: +a) promptly notify the Commercial Contributor in writing of such claim, and +b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such claim at +its own expense. -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If +that Commercial Contributor then makes performance claims, or offers +warranties related to Product X, those performance claims and warranties are +such Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a +court requires any other Contributor to pay any damages as a result, the +Commercial Contributor must pay those damages. -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== +5. NO WARRANTY -This software includes a binary and/or source version of data from +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the +risks and costs of program errors, compliance with applicable laws, damage to +or loss of data, programs or equipment, and unavailability or interruption of +operations. - mecab-ko-dic-2.0.3-20170922 +6. DISCLAIMER OF LIABILITY -which can be obtained from +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION +LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES. - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +7. GENERAL --------------------------------------------------------------------------------- +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of the +remainder of the terms of this Agreement, and without further action by the +parties hereto, such provision shall be reformed to the minimum extent +necessary to make such provision valid and enforceable. -383. Group: org.apache.lucene Name: lucene-sandbox Version: 8.10.1 +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted +under Section 2(b) shall terminate as of the date such litigation is filed. -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. -Embedded license: +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to +time. No one other than the Agreement Steward has the right to modify this +Agreement. The Eclipse Foundation is the initial Agreement Steward. The +Eclipse Foundation may assign the responsibility to serve as the Agreement +Steward to a suitable separate entity. Each new version of the Agreement will +be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly +stated in Sections 2(a) and 2(b) above, Recipient receives no rights or +licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the +Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. - **************************************** Apache License @@ -48145,528 +46384,848 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + **************************************** +============================================================== + Jetty Web Container + Copyright 1995-2018 Mort Bay Consulting Pty Ltd. +============================================================== -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: +The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd +unless otherwise noted. -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ +Jetty is dual licensed under both + + * The Apache 2.0 License + http://www.apache.org/licenses/LICENSE-2.0.html + + and + + * The Eclipse Public 1.0 License + http://www.eclipse.org/legal/epl-v10.html + +Jetty may be distributed under either license. + +------ +Eclipse + +The following artifacts are EPL. + * org.eclipse.jetty.orbit:org.eclipse.jdt.core + +The following artifacts are EPL and ASL2. + * org.eclipse.jetty.orbit:javax.security.auth.message + + +The following artifacts are EPL and CDDL 1.0. + * org.eclipse.jetty.orbit:javax.mail.glassfish + + +------ +Oracle + +The following artifacts are CDDL + GPLv2 with classpath exception. +https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + + * javax.servlet:javax.servlet-api + * javax.annotation:javax.annotation-api + * javax.transaction:javax.transaction-api + * javax.websocket:javax.websocket-api + +------ +Oracle OpenJDK + +If ALPN is used to negotiate HTTP/2 connections, then the following +artifacts may be included in the distribution or downloaded when ALPN +module is selected. + + * java.sun.security.ssl + +These artifacts replace/modify OpenJDK classes. The modififications +are hosted at github and both modified and original are under GPL v2 with +classpath exceptions. +http://openjdk.java.net/legal/gplv2+ce.html + + +------ +OW2 + +The following artifacts are licensed by the OW2 Foundation according to the +terms of http://asm.ow2.org/license.html + +org.ow2.asm:asm-commons +org.ow2.asm:asm + + +------ +Apache + +The following artifacts are ASL2 licensed. + +org.apache.taglibs:taglibs-standard-spec +org.apache.taglibs:taglibs-standard-impl + + +------ +MortBay + +The following artifacts are ASL2 licensed. Based on selected classes from +following Apache Tomcat jars, all ASL2 licensed. + +org.mortbay.jasper:apache-jsp + org.apache.tomcat:tomcat-jasper + org.apache.tomcat:tomcat-juli + org.apache.tomcat:tomcat-jsp-api + org.apache.tomcat:tomcat-el-api + org.apache.tomcat:tomcat-jasper-el + org.apache.tomcat:tomcat-api + org.apache.tomcat:tomcat-util-scan + org.apache.tomcat:tomcat-util + +org.mortbay.jasper:apache-el + org.apache.tomcat:tomcat-jasper-el + org.apache.tomcat:tomcat-el-api + + +------ +Mortbay + +The following artifacts are CDDL + GPLv2 with classpath exception. + +https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + +org.eclipse.jetty.toolchain:jetty-schemas + +------ +Assorted + +The UnixCrypt.java code implements the one way cryptography used by +Unix systems for simple password protection. Copyright 1996 Aki Yoshida, +modified April 2001 by Iris Van den Broeke, Daniel Deville. +Permission to use, copy, modify and distribute UnixCrypt +for non-commercial or commercial purposes and without fee is +granted provided that the copyright notice appears in all copies. + +-------------------------------------------------------------------------------- + +358. Group: org.eclipse.parsson Name: parsson Version: 1.1.4 + +Manifest Project URL: https://www.eclipse.org + +POM License: Eclipse Public License 2.0 - https://projects.eclipse.org/license/epl-2.0 + +POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + +POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://projects.eclipse.org/license/secondary-gpl-2.0-cp + +Embedded license: + + **************************************** + +# Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + 1. DEFINITIONS + + "Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + + "Contributor" means any person or entity that Distributes the Program. + + "Licensed Patents" mean patent claims licensable by a Contributor which + are necessarily infringed by the use or sale of its Contribution alone + or when combined with the Program. + + "Program" means the Contributions Distributed in accordance with this + Agreement. + + "Recipient" means anyone who receives the Program under this Agreement + or any Secondary License (as applicable), including Contributors. + + "Derivative Works" shall mean any work, whether in Source Code or other + form, that is based on (or derived from) the Program and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. + + "Modified Works" shall mean any work in Source Code or other form that + results from an addition to, deletion from, or modification of the + contents of the Program, including, for purposes of clarity any new file + in Source Code form that contains any contents of the Program. Modified + Works shall not include works that contain only declarations, + interfaces, types, classes, structures, or files of the Program solely + in each case in order to link to, bind by name, or subclass the Program + or Modified Works thereof. + + "Distribute" means the acts of a) distributing or b) making available + in any manner that enables the transfer of a copy. + + "Source Code" means the form of a Program preferred for making + modifications, including but not limited to software source code, + documentation source, and configuration files. + + "Secondary License" means either the GNU General Public License, + Version 2.0, or any later versions of that license, including any + exceptions or additional permissions as identified by the initial + Contributor. + + 2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + + 3. REQUIREMENTS + + 3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + + 3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + + 3.3 Contributors may not remove or alter any copyright, patent, + trademark, attribution notices, disclaimers of warranty, or limitations + of liability ("notices") contained within the Program from any copy of + the Program which they Distribute, provided that Contributors may add + their own appropriate notices. + + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities + with respect to end users, business partners and the like. While this + license is intended to facilitate the commercial use of the Program, + the Contributor who includes the Program in a commercial product + offering should do so in a manner which does not create potential + liability for other Contributors. Therefore, if a Contributor includes + the Program in a commercial product offering, such Contributor + ("Commercial Contributor") hereby agrees to defend and indemnify every + other Contributor ("Indemnified Contributor") against any losses, + damages and costs (collectively "Losses") arising from claims, lawsuits + and other legal actions brought by a third party against the Indemnified + Contributor to the extent caused by the acts or omissions of such + Commercial Contributor in connection with its distribution of the Program + in a commercial product offering. The obligations in this section do not + apply to any claims or Losses relating to any actual or alleged + intellectual property infringement. In order to qualify, an Indemnified + Contributor must: a) promptly notify the Commercial Contributor in + writing of such claim, and b) allow the Commercial Contributor to control, + and cooperate with the Commercial Contributor in, the defense and any + related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + + For example, a Contributor might include the Program in a commercial + product offering, Product X. That Contributor is then a Commercial + Contributor. If that Commercial Contributor then makes performance + claims, or offers warranties related to Product X, those performance + claims and warranties are such Commercial Contributor's responsibility + alone. Under this section, the Commercial Contributor would have to + defend claims against the other Contributors related to those performance + claims and warranties, and if a court requires any other Contributor to + pay any damages as a result, the Commercial Contributor must pay + those damages. + + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR + IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF + TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR + PURPOSE. Each Recipient is solely responsible for determining the + appropriateness of using and distributing the Program and assumes all + risks associated with its exercise of rights under this Agreement, + including but not limited to the risks and costs of program errors, + compliance with applicable laws, damage to or loss of data, programs + or equipment, and unavailability or interruption of operations. + + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS + SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST + PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE + EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this Agreement, and without further + action by the parties hereto, such provision shall be reformed to the + minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity + (including a cross-claim or counterclaim in a lawsuit) alleging that the + Program itself (excluding combinations of the Program with other software + or hardware) infringes such Recipient's patent(s), then such Recipient's + rights granted under Section 2(b) shall terminate as of the date such + litigation is filed. + All Recipient's rights under this Agreement shall terminate if it + fails to comply with any of the material terms or conditions of this + Agreement and does not cure such failure in a reasonable period of + time after becoming aware of such noncompliance. If all Recipient's + rights under this Agreement terminate, Recipient agrees to cease use + and distribution of the Program as soon as reasonably practicable. + However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: + Everyone is permitted to copy and distribute copies of this Agreement, + but in order to avoid inconsistency the Agreement is copyrighted and + may only be modified in the following manner. The Agreement Steward + reserves the right to publish new versions (including revisions) of + this Agreement from time to time. No one other than the Agreement + Steward has the right to modify this Agreement. The Eclipse Foundation + is the initial Agreement Steward. The Eclipse Foundation may assign the + responsibility to serve as the Agreement Steward to a suitable separate + entity. Each new version of the Agreement will be given a distinguishing + version number. The Program (including Contributions) may always be + Distributed subject to the version of the Agreement under which it was + received. In addition, after a new version of the Agreement is published, + Contributor may elect to Distribute the Program (including its + Contributions) under the new version. - http://www.python.org/download/releases/2.4.2/license/ + Except as expressly stated in Sections 2(a) and 2(b) above, Recipient + receives no rights or licenses to the intellectual property of any + Contributor under this Agreement, whether expressly, by implication, + estoppel or otherwise. All rights in the Program not expressly granted + under this Agreement are reserved. Nothing in this Agreement is intended + to be enforceable by any entity that is not a Contributor or Recipient. + No third-party beneficiary rights are created under this Agreement. -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: + Exhibit A - Form of Secondary Licenses Notice - http://www.python.org/download/releases/3.1.2/license/ + "This Source Code may also be made available under the following + Secondary Licenses when the conditions for such availability set forth + in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), + version(s), and exceptions or additional permissions here}." -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. + You may add additional accurate notices of copyright ownership. -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html +--- -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: +## The GNU General Public License (GPL) Version 2, June 1991 -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor + Boston, MA 02110-1335 + USA -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + Preamble -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + The licenses for most software are designed to take away your freedom to + share and change it. By contrast, the GNU General Public License is + intended to guarantee your freedom to share and change free software--to + make sure the software is free for all its users. This General Public + License applies to most of the Free Software Foundation's software and + to any other program whose authors commit to using it. (Some other Free + Software Foundation software is covered by the GNU Library General + Public License instead.) You can apply it to your programs, too. -The following license applies to the KStemmer: + When we speak of free software, we are referring to freedom, not price. + Our General Public Licenses are designed to make sure that you have the + freedom to distribute copies of free software (and charge for this + service if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs; and that you know you can do these things. -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. + To protect your rights, we need to make restrictions that forbid anyone + to deny you these rights or to ask you to surrender the rights. These + restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + For example, if you distribute copies of such a program, whether gratis + or for a fee, you must give the recipients all the rights that you have. + You must make sure that they, too, receive or can get the source code. + And you must show them these terms so they know their rights. -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. + Finally, any free program is threatened constantly by software patents. + We wish to avoid the danger that redistributors of a free program will + individually obtain patent licenses, in effect making the program + proprietary. To prevent this, we have made it clear that any patent must + be licensed for everyone's free use or not licensed at all. -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. + The precise terms and conditions for copying, distribution and + modification follow. -The following license applies to the Morfologik project: + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. + 0. This License applies to any program or other work which contains a + notice placed by the copyright holder saying it may be distributed under + the terms of this General Public License. The "Program", below, refers + to any such program or work, and a "work based on the Program" means + either the Program or any derivative work under copyright law: that is + to say, a work containing the Program or a portion of it, either + verbatim or with modifications and/or translated into another language. + (Hereinafter, translation is included without limitation in the term + "modification".) Each licensee is addressed as "you". -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of running + the Program is not restricted, and the output from the Program is + covered only if its contents constitute a work based on the Program + (independent of having been made by running the Program). Whether that + is true depends on what the Program does. - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. + 1. You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you conspicuously + and appropriately publish on each copy an appropriate copyright notice + and disclaimer of warranty; keep intact all the notices that refer to + this License and to the absence of any warranty; and give any other + recipients of the Program a copy of this License along with the Program. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. ---- + 2. You may modify your copy or copies of the Program or any portion of + it, thus forming a work based on the Program, and copy and distribute + such modifications or work under the terms of Section 1 above, provided + that you also meet all of these conditions: -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. ---- + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License. -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this License. + (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program + is not required to print an announcement.) -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, and + can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based on + the Program, the distribution of the whole must be on the terms of this + License, whose permissions for other licensees extend to the entire + whole, and thus to each and every part regardless of who wrote it. -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. -All rights reserved. + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of a + storage or distribution medium does not bring the other work under the + scope of this License. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost + of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed + only for noncommercial distribution and only if you received the + program in object code or executable form with such an offer, in + accord with Subsection b above.) ---- + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source code + means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to control + compilation and installation of the executable. However, as a special + exception, the source code distributed need not include anything that is + normally distributed (in either source or binary form) with the major + components (compiler, kernel, and so on) of the operating system on + which the executable runs, unless that component itself accompanies the + executable. -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. + If distribution of executable or object code is made by offering access + to copy from a designated place, then offering equivalent access to copy + the source code from the same place counts as distribution of the source + code, even though third parties are not compelled to copy the source + along with the object code. -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt otherwise + to copy, modify, sublicense or distribute the Program is void, and will + automatically terminate your rights under this License. However, parties + who have received copies, or rights, from you under this License will + not have their licenses terminated so long as such parties remain in + full compliance. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and all + its terms and conditions for copying, distributing or modifying the + Program or works based on it. -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further restrictions + on the recipients' exercise of the rights granted herein. You are not + responsible for enforcing compliance by third parties to this License. -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot distribute + so as to satisfy simultaneously your obligations under this License and + any other pertinent obligations, then as a consequence you may not + distribute the Program at all. For example, if a patent license would + not permit royalty-free redistribution of the Program by all those who + receive copies directly or indirectly through you, then the only way you + could satisfy both it and this License would be to refrain entirely from + distribution of the Program. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is implemented + by public license practices. Many people have made generous + contributions to the wide range of software distributed through that + system in reliance on consistent application of that system; it is up to + the author/donor to decide if he or she is willing to distribute + software through any other system and a licensee cannot impose that choice. - **************************************** + This section is intended to make thoroughly clear what is believed to be + a consequence of the rest of this License. -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License may + add an explicit geographical distribution limitation excluding those + countries, so that distribution is permitted only in or among countries + not thus excluded. In such case, this License incorporates the + limitation as if written in the body of this License. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + 9. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and + conditions either of that version or of any later version published by + the Free Software Foundation. If the Program does not specify a version + number of this License, you may choose any version ever published by the + Free Software Foundation. -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted by the + Free Software Foundation, write to the Free Software Foundation; we + sometimes make exceptions for this. Our decision will be guided by the + two goals of preserving the free status of all derivatives of our free + software and of promoting the sharing and reuse of software generally. -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. + EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR + OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, + EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE + ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH + YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL + NECESSARY SERVICING, REPAIR OR CORRECTION. -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY + AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR + DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL + DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM + (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED + INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF + THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ + END OF TERMS AND CONDITIONS -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. + How to Apply These Terms to Your New Programs -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ + To do so, attach the following notices to the program. It is safest to + attach them to the start of each source file to most effectively convey + the exclusion of warranty; and each file should have at least the + "copyright" line and a pointer to where the full notice is found. -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html + One line to give the program's name and a brief idea of what it does. + Copyright (C) -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. + Also add information on how to contact you by electronic and paper mail. -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type + `show w'. This is free software, and you are welcome to redistribute + it under certain conditions; type `show c' for details. -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. + The hypothetical commands `show w' and `show c' should show the + appropriate parts of the General Public License. Of course, the commands + you use may be called something other than `show w' and `show c'; they + could even be mouse-clicks or menu items--whatever suits your program. -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a "copyright disclaimer" for the program, if + necessary. Here is a sample; alter the names: -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (which makes passes at compilers) written by + James Hacker. -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. + This General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications + with the library. If this is what you want to do, use the GNU Library + General Public License instead of this License. -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) +--- -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php +## CLASSPATH EXCEPTION -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License version 2 cover the whole + combination. -This software includes a binary and/or source version of data from + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from or + based on this library. If you modify this library, you may extend this + exception to your version of the library, but you are not obligated to + do so. If you do not wish to do so, delete this exception statement + from your version. - mecab-ipadic-2.7.0-20070801 + **************************************** -which can be obtained from +[//]: # " Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved. " +[//]: # " " +[//]: # " This program and the accompanying materials are made available under the " +[//]: # " terms of the Eclipse Public License v. 2.0, which is available at " +[//]: # " http://www.eclipse.org/legal/epl-2.0. " +[//]: # " " +[//]: # " This Source Code may also be made available under the following Secondary " +[//]: # " Licenses when the conditions for such availability set forth in the " +[//]: # " Eclipse Public License v. 2.0 are satisfied: GNU General Public License, " +[//]: # " version 2 with the GNU Classpath Exception, which is available at " +[//]: # " https://www.gnu.org/software/classpath/license.html. " +[//]: # " " +[//]: # " SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 " - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz +# Notices for Eclipse Parsson -or +This content is produced and maintained by the Eclipse Parsson project. - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz +* Project home: https://projects.eclipse.org/projects/ee4j.parsson -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== +## Trademarks -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. + Eclipse Parsson is a trademark of the Eclipse Foundation. -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. +## Copyright -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. -NO WARRANTY +## Declared Project Licenses -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v. 2.0 which is available at +https://www.eclipse.org/legal/epl-2.0. -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. +SPDX-License-Identifier: EPL-2.0 -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +## Source Code -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. +The project maintains the following source code repositories: -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== +* https://github.com/eclipse-ee4j/parsson -This software includes a binary and/or source version of data from +## Third-party Content - mecab-ko-dic-2.0.3-20170922 +This project leverages the following third party content. -which can be obtained from +None - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +## Cryptography +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. -------------------------------------------------------------------------------- -384. Group: org.apache.lucene Name: lucene-spatial-extras Version: 8.10.1 +359. Group: org.elasticsearch.client Name: elasticsearch-rest-client Version: 7.17.0 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://github.com/elastic/elasticsearch + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 Embedded license: @@ -48861,7 +47420,7 @@ Embedded license: same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2019 Elastic and contributors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -48871,1262 +47430,1099 @@ Embedded license: Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: - -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - - -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/2.4.2/license/ - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: - - http://www.python.org/download/releases/3.1.2/license/ - -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: - -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: - -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. - -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html - -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: - -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The following license applies to the KStemmer: - -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. - -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - -The following license applies to the Morfologik project: - -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ---- - -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ---- + **************************************** -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. +Elasticsearch +Copyright 2009-2021 Elasticsearch -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz +This product includes software developed by +Joda.org (http://www.joda.org/). -All rights reserved. +-------------------------------------------------------------------------------- -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +360. Group: org.glassfish Name: jakarta.json Version: 2.0.0 -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +Manifest Project URL: https://www.eclipse.org -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. +POM Project URL: https://github.com/eclipse-ee4j/jsonp -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +POM License: Eclipse Public License 2.0 - https://projects.eclipse.org/license/epl-2.0 ---- +POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://projects.eclipse.org/license/secondary-gpl-2.0-cp -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +Embedded license: -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + **************************************** -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +# Eclipse Public License - v 2.0 -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + 1. DEFINITIONS + "Contribution" means: - **************************************** + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + "Contributor" means any person or entity that Distributes the Program. -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces + "Licensed Patents" mean patent claims licensable by a Contributor which + are necessarily infringed by the use or sale of its Contribution alone + or when combined with the Program. -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others + "Program" means the Contributions Distributed in accordance with this + Agreement. -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. + "Recipient" means anyone who receives the Program under this Agreement + or any Secondary License (as applicable), including Contributors. -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ + "Derivative Works" shall mean any work, whether in Source Code or other + form, that is based on (or derived from) the Program and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ + "Modified Works" shall mean any work in Source Code or other form that + results from an addition to, deletion from, or modification of the + contents of the Program, including, for purposes of clarity any new file + in Source Code form that contains any contents of the Program. Modified + Works shall not include works that contain only declarations, + interfaces, types, classes, structures, or files of the Program solely + in each case in order to link to, bind by name, or subclass the Program + or Modified Works thereof. -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. + "Distribute" means the acts of a) distributing or b) making available + in any manner that enables the transfer of a copy. -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) + "Source Code" means the form of a Program preferred for making + modifications, including but not limited to software source code, + documentation source, and configuration files. -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ + "Secondary License" means either the GNU General Public License, + Version 2.0, or any later versions of that license, including any + exceptions or additional permissions as identified by the initial + Contributor. -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html + 2. GRANT OF RIGHTS -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. + 3. REQUIREMENTS -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. + 3.1 If a Contributor Distributes the Program in any form, then: -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php + 3.2 When the Program is Distributed as Source Code: -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and -This software includes a binary and/or source version of data from + b) a copy of this Agreement must be included with each copy of + the Program. - mecab-ipadic-2.7.0-20070801 + 3.3 Contributors may not remove or alter any copyright, patent, + trademark, attribution notices, disclaimers of warranty, or limitations + of liability ("notices") contained within the Program from any copy of + the Program which they Distribute, provided that Contributors may add + their own appropriate notices. -which can be obtained from + 4. COMMERCIAL DISTRIBUTION - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz + Commercial distributors of software may accept certain responsibilities + with respect to end users, business partners and the like. While this + license is intended to facilitate the commercial use of the Program, + the Contributor who includes the Program in a commercial product + offering should do so in a manner which does not create potential + liability for other Contributors. Therefore, if a Contributor includes + the Program in a commercial product offering, such Contributor + ("Commercial Contributor") hereby agrees to defend and indemnify every + other Contributor ("Indemnified Contributor") against any losses, + damages and costs (collectively "Losses") arising from claims, lawsuits + and other legal actions brought by a third party against the Indemnified + Contributor to the extent caused by the acts or omissions of such + Commercial Contributor in connection with its distribution of the Program + in a commercial product offering. The obligations in this section do not + apply to any claims or Losses relating to any actual or alleged + intellectual property infringement. In order to qualify, an Indemnified + Contributor must: a) promptly notify the Commercial Contributor in + writing of such claim, and b) allow the Commercial Contributor to control, + and cooperate with the Commercial Contributor in, the defense and any + related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. -or + For example, a Contributor might include the Program in a commercial + product offering, Product X. That Contributor is then a Commercial + Contributor. If that Commercial Contributor then makes performance + claims, or offers warranties related to Product X, those performance + claims and warranties are such Commercial Contributor's responsibility + alone. Under this section, the Commercial Contributor would have to + defend claims against the other Contributors related to those performance + claims and warranties, and if a court requires any other Contributor to + pay any damages as a result, the Commercial Contributor must pay + those damages. - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz + 5. NO WARRANTY -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR + IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF + TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR + PURPOSE. Each Recipient is solely responsible for determining the + appropriateness of using and distributing the Program and assumes all + risks associated with its exercise of rights under this Agreement, + including but not limited to the risks and costs of program errors, + compliance with applicable laws, damage to or loss of data, programs + or equipment, and unavailability or interruption of operations. -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. + 6. DISCLAIMER OF LIABILITY -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS + SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST + PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE + EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. + 7. GENERAL -NO WARRANTY + If any provision of this Agreement is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this Agreement, and without further + action by the parties hereto, such provision shall be reformed to the + minimum extent necessary to make such provision valid and enforceable. -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. + If Recipient institutes patent litigation against any entity + (including a cross-claim or counterclaim in a lawsuit) alleging that the + Program itself (excluding combinations of the Program with other software + or hardware) infringes such Recipient's patent(s), then such Recipient's + rights granted under Section 2(b) shall terminate as of the date such + litigation is filed. -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. + All Recipient's rights under this Agreement shall terminate if it + fails to comply with any of the material terms or conditions of this + Agreement and does not cure such failure in a reasonable period of + time after becoming aware of such noncompliance. If all Recipient's + rights under this Agreement terminate, Recipient agrees to cease use + and distribution of the Program as soon as reasonably practicable. + However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. + Everyone is permitted to copy and distribute copies of this Agreement, + but in order to avoid inconsistency the Agreement is copyrighted and + may only be modified in the following manner. The Agreement Steward + reserves the right to publish new versions (including revisions) of + this Agreement from time to time. No one other than the Agreement + Steward has the right to modify this Agreement. The Eclipse Foundation + is the initial Agreement Steward. The Eclipse Foundation may assign the + responsibility to serve as the Agreement Steward to a suitable separate + entity. Each new version of the Agreement will be given a distinguishing + version number. The Program (including Contributions) may always be + Distributed subject to the version of the Agreement under which it was + received. In addition, after a new version of the Agreement is published, + Contributor may elect to Distribute the Program (including its + Contributions) under the new version. -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. + Except as expressly stated in Sections 2(a) and 2(b) above, Recipient + receives no rights or licenses to the intellectual property of any + Contributor under this Agreement, whether expressly, by implication, + estoppel or otherwise. All rights in the Program not expressly granted + under this Agreement are reserved. Nothing in this Agreement is intended + to be enforceable by any entity that is not a Contributor or Recipient. + No third-party beneficiary rights are created under this Agreement. -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== + Exhibit A - Form of Secondary Licenses Notice -This software includes a binary and/or source version of data from + "This Source Code may also be made available under the following + Secondary Licenses when the conditions for such availability set forth + in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), + version(s), and exceptions or additional permissions here}." - mecab-ko-dic-2.0.3-20170922 + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. -which can be obtained from + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz + You may add additional accurate notices of copyright ownership. --------------------------------------------------------------------------------- +--- -385. Group: org.apache.lucene Name: lucene-spatial3d Version: 8.10.1 +## The GNU General Public License (GPL) Version 2, June 1991 -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor + Boston, MA 02110-1335 + USA -Embedded license: + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - **************************************** + Preamble + + The licenses for most software are designed to take away your freedom to + share and change it. By contrast, the GNU General Public License is + intended to guarantee your freedom to share and change free software--to + make sure the software is free for all its users. This General Public + License applies to most of the Free Software Foundation's software and + to any other program whose authors commit to using it. (Some other Free + Software Foundation software is covered by the GNU Library General + Public License instead.) You can apply it to your programs, too. + When we speak of free software, we are referring to freedom, not price. + Our General Public Licenses are designed to make sure that you have the + freedom to distribute copies of free software (and charge for this + service if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs; and that you know you can do these things. - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ + To protect your rights, we need to make restrictions that forbid anyone + to deny you these rights or to ask you to surrender the rights. These + restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + For example, if you distribute copies of such a program, whether gratis + or for a fee, you must give the recipients all the rights that you have. + You must make sure that they, too, receive or can get the source code. + And you must show them these terms so they know their rights. - 1. Definitions. + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + Finally, any free program is threatened constantly by software patents. + We wish to avoid the danger that redistributors of a free program will + individually obtain patent licenses, in effect making the program + proprietary. To prevent this, we have made it clear that any patent must + be licensed for everyone's free use or not licensed at all. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. + The precise terms and conditions for copying, distribution and + modification follow. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + 0. This License applies to any program or other work which contains a + notice placed by the copyright holder saying it may be distributed under + the terms of this General Public License. The "Program", below, refers + to any such program or work, and a "work based on the Program" means + either the Program or any derivative work under copyright law: that is + to say, a work containing the Program or a portion of it, either + verbatim or with modifications and/or translated into another language. + (Hereinafter, translation is included without limitation in the term + "modification".) Each licensee is addressed as "you". - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of running + the Program is not restricted, and the output from the Program is + covered only if its contents constitute a work based on the Program + (independent of having been made by running the Program). Whether that + is true depends on what the Program does. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). + 1. You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you conspicuously + and appropriately publish on each copy an appropriate copyright notice + and disclaimer of warranty; keep intact all the notices that refer to + this License and to the absence of any warranty; and give any other + recipients of the Program a copy of this License along with the Program. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." + 2. You may modify your copy or copies of the Program or any portion of + it, thus forming a work based on the Program, and copy and distribute + such modifications or work under the terms of Section 1 above, provided + that you also meet all of these conditions: - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this License. + (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program + is not required to print an announcement.) - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, and + can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based on + the Program, the distribution of the whole must be on the terms of this + License, whose permissions for other licensees extend to the entire + whole, and thus to each and every part regardless of who wrote it. - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of a + storage or distribution medium does not bring the other work under the + scope of this License. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost + of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed + only for noncommercial distribution and only if you received the + program in object code or executable form with such an offer, in + accord with Subsection b above.) - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source code + means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to control + compilation and installation of the executable. However, as a special + exception, the source code distributed need not include anything that is + normally distributed (in either source or binary form) with the major + components (compiler, kernel, and so on) of the operating system on + which the executable runs, unless that component itself accompanies the + executable. - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. + If distribution of executable or object code is made by offering access + to copy from a designated place, then offering equivalent access to copy + the source code from the same place counts as distribution of the source + code, even though third parties are not compelled to copy the source + along with the object code. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt otherwise + to copy, modify, sublicense or distribute the Program is void, and will + automatically terminate your rights under this License. However, parties + who have received copies, or rights, from you under this License will + not have their licenses terminated so long as such parties remain in + full compliance. - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and all + its terms and conditions for copying, distributing or modifying the + Program or works based on it. - END OF TERMS AND CONDITIONS + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further restrictions + on the recipients' exercise of the rights granted herein. You are not + responsible for enforcing compliance by third parties to this License. - APPENDIX: How to apply the Apache License to your work. + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot distribute + so as to satisfy simultaneously your obligations under this License and + any other pertinent obligations, then as a consequence you may not + distribute the Program at all. For example, if a patent license would + not permit royalty-free redistribution of the Program by all those who + receive copies directly or indirectly through you, then the only way you + could satisfy both it and this License would be to refrain entirely from + distribution of the Program. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. - Copyright [yyyy] [name of copyright owner] + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is implemented + by public license practices. Many people have made generous + contributions to the wide range of software distributed through that + system in reliance on consistent application of that system; it is up to + the author/donor to decide if he or she is willing to distribute + software through any other system and a licensee cannot impose that choice. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + This section is intended to make thoroughly clear what is believed to be + a consequence of the rest of this License. - http://www.apache.org/licenses/LICENSE-2.0 + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License may + add an explicit geographical distribution limitation excluding those + countries, so that distribution is permitted only in or among countries + not thus excluded. In such case, this License incorporates the + limitation as if written in the body of this License. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + 9. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and + conditions either of that version or of any later version published by + the Free Software Foundation. If the Program does not specify a version + number of this License, you may choose any version ever published by the + Free Software Foundation. + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted by the + Free Software Foundation, write to the Free Software Foundation; we + sometimes make exceptions for this. Our decision will be guided by the + two goals of preserving the free status of all derivatives of our free + software and of promoting the sharing and reuse of software generally. -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: + NO WARRANTY -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. + EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR + OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, + EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE + ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH + YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL + NECESSARY SERVICING, REPAIR OR CORRECTION. + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY + AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR + DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL + DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM + (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED + INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF + THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: + END OF TERMS AND CONDITIONS - http://www.python.org/download/releases/2.4.2/license/ + How to Apply These Terms to Your New Programs -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. - http://www.python.org/download/releases/3.1.2/license/ + To do so, attach the following notices to the program. It is safest to + attach them to the start of each source file to most effectively convey + the exclusion of warranty; and each file should have at least the + "copyright" line and a pointer to where the full notice is found. -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: + One line to give the program's name and a brief idea of what it does. + Copyright (C) -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: + Also add information on how to contact you by electronic and paper mail. -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type + `show w'. This is free software, and you are welcome to redistribute + it under certain conditions; type `show c' for details. - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + The hypothetical commands `show w' and `show c' should show the + appropriate parts of the General Public License. Of course, the commands + you use may be called something other than `show w' and `show c'; they + could even be mouse-clicks or menu items--whatever suits your program. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a "copyright disclaimer" for the program, if + necessary. Here is a sample; alter the names: -The following license applies to the KStemmer: + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (which makes passes at compilers) written by + James Hacker. -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: + This General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications + with the library. If this is what you want to do, use the GNU Library + General Public License instead of this License. -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +--- -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. +## CLASSPATH EXCEPTION -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License version 2 cover the whole + combination. -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from or + based on this library. If you modify this library, you may extend this + exception to your version of the library, but you are not obligated to + do so. If you do not wish to do so, delete this exception statement + from your version. -The following license applies to the Morfologik project: + **************************************** -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. +[//]: # " Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved. " +[//]: # " " +[//]: # " This program and the accompanying materials are made available under the " +[//]: # " terms of the Eclipse Public License v. 2.0, which is available at " +[//]: # " http://www.eclipse.org/legal/epl-2.0. " +[//]: # " " +[//]: # " This Source Code may also be made available under the following Secondary " +[//]: # " Licenses when the conditions for such availability set forth in the " +[//]: # " Eclipse Public License v. 2.0 are satisfied: GNU General Public License, " +[//]: # " version 2 with the GNU Classpath Exception, which is available at " +[//]: # " https://www.gnu.org/software/classpath/license.html. " +[//]: # " " +[//]: # " SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 " -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +# Notices for Jakarta JSON Processing - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +This content is produced and maintained by the Jakarta JSON Processing project. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* Project home: https://projects.eclipse.org/projects/ee4j.jsonp ---- +## Trademarks -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. + Jakarta JSON Processing is a trademark of the Eclipse Foundation. ---- +## Copyright -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ +## Declared Project Licenses -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v. 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made +available under the following Secondary Licenses when the conditions for such +availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU +General Public License v2.0 w/Classpath exception which is available at +https://www.gnu.org/software/classpath/license.html. -All rights reserved. +SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +## Source Code -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +The project maintains the following source code repositories: -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. +* https://github.com/eclipse-ee4j/jsonp -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +## Third-party Content ---- +This project leverages the following third party content. -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +javax.ws.rs-api:2.0.1 (2.0.1) -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +* License: (CDDL-1.1 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND + Apache-2.0 +* Project: https://github.com/jax-rs/api +* Source: https://github.com/jax-rs/api -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +javax.ws.rs:jsr311-api:jar:1.1.1 (1.1.1) -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +* License: CDDL-1.0 AND Apache-2.0 +* Project: https://github.com/jax-rs/api +* Source: + http://search.maven.org/remotecontent?filepath=javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1-sources.jar -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. +javax:javaee-web-api:jar:7.0 (7.0) -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* License: (CDDL-1.0 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND + (EPL-1.0 OR BSD-3-Clause) AND Apache-2.0 AND LicenseRef-Public Domain +* Project: https://javaee.github.io +* Source: + http://search.maven.org/remotecontent?filepath=javax/javaee-web-api/7.0/javaee-web-api-7.0-sources.jar +JUnit (4.12) - **************************************** +* License: Eclipse Public License -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation +## Cryptography -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. +-------------------------------------------------------------------------------- -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces +361. Group: org.hamcrest Name: hamcrest Version: 2.2 -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others +POM Project URL: http://hamcrest.org/JavaHamcrest/ -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. +POM License: BSD License 3 - http://opensource.org/licenses/BSD-3-Clause -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ +-------------------------------------------------------------------------------- -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ +362. Group: org.hdrhistogram Name: HdrHistogram Version: 2.1.12 -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. +POM Project URL: http://hdrhistogram.github.io/HdrHistogram/ -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) +POM License: BSD-2-Clause - https://opensource.org/licenses/BSD-2-Clause -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ +POM License: Public Domain, per Creative Commons CC0 - http://creativecommons.org/publicdomain/zero/1.0/ -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html +-------------------------------------------------------------------------------- -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) +363. Group: org.hdrhistogram Name: HdrHistogram Version: 2.2.1 -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ +POM Project URL: http://hdrhistogram.github.io/HdrHistogram/ -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. +POM License: BSD-2-Clause - https://opensource.org/licenses/BSD-2-Clause -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. +POM License: Public Domain, per Creative Commons CC0 - http://creativecommons.org/publicdomain/zero/1.0/ -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java +Embedded license: -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. + **************************************** -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. +The code in this repository code was Written by Gil Tene, Michael Barker, +and Matt Warren, and released to the public domain, as explained at +http://creativecommons.org/publicdomain/zero/1.0/ -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. +For users of this code who wish to consume it under the "BSD" license +rather than under the public domain or CC0 contribution text mentioned +above, the code found under this directory is *also* provided under the +following license (commonly referred to as the BSD 2-Clause License). This +license does not detract from the above stated release of the code into +the public domain, and simply represents an additional license granted by +the Author. -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. +----------------------------------------------------------------------------- +** Beginning of "BSD 2-Clause License" text. ** -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). + Copyright (c) 2012, 2013, 2014, 2015, 2016 Gil Tene + Copyright (c) 2014 Michael Barker + Copyright (c) 2014 Matt Warren + All rights reserved. -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. -This software includes a binary and/or source version of data from +-------------------------------------------------------------------------------- - mecab-ipadic-2.7.0-20070801 +364. Group: org.hibernate.validator Name: hibernate-validator Version: 8.0.1.Final -which can be obtained from +POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz +-------------------------------------------------------------------------------- -or +365. Group: org.javassist Name: javassist Version: 3.28.0-GA - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz +POM Project URL: http://www.javassist.org/ -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== +POM License: Apache License 2.0 - http://www.apache.org/licenses/ -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. +POM License: LGPL 2.1 - http://www.gnu.org/licenses/lgpl-2.1.html -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. +POM License: MPL 1.1 - http://www.mozilla.org/MPL/MPL-1.1.html -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. +-------------------------------------------------------------------------------- -NO WARRANTY +366. Group: org.javatuples Name: javatuples Version: 1.2 -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +POM Project URL: http://www.javatuples.org -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +Embedded license: -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. + **************************************** -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -This software includes a binary and/or source version of data from + **************************************** - mecab-ko-dic-2.0.3-20170922 + + Copyright (c) 2010, The JAVATUPLES team (http://www.javatuples.org) + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + -which can be obtained from +-------------------------------------------------------------------------------- - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +367. Group: org.jboss.logging Name: jboss-logging Version: 3.4.3.Final --------------------------------------------------------------------------------- +Project URL: http://www.jboss.org -386. Group: org.apache.lucene Name: lucene-suggest Version: 8.10.1 +POM License: Apache License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt Embedded license: @@ -50335,980 +48731,846 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- +368. Group: org.jetbrains Name: annotations Version: 13.0 -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from unicode conversion examples available at -http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright -from those sources: +POM Project URL: http://www.jetbrains.org -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +-------------------------------------------------------------------------------- -Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was -derived from Python 2.4.2 sources available at -http://www.python.org. Full license is here: +369. Group: org.jetbrains.kotlin Name: kotlin-reflect Version: 1.7.10 - http://www.python.org/download/releases/2.4.2/license/ +POM Project URL: https://kotlinlang.org/ -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from Python 3.1.2 sources available at -http://www.python.org. Full license is here: +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - http://www.python.org/download/releases/3.1.2/license/ +-------------------------------------------------------------------------------- -Some code in core/src/java/org/apache/lucene/util/automaton was -derived from Brics automaton sources available at -www.brics.dk/automaton/. Here is the copyright from those sources: +370. Group: org.jetbrains.kotlin Name: kotlin-script-runtime Version: 1.7.10 -/* - * Copyright (c) 2001-2009 Anders Moeller - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton -were automatically generated with the moman/finenight FSA package. -Here is the copyright for those sources: +POM Project URL: https://kotlinlang.org/ -# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was -derived from ICU (http://www.icu-project.org) -The full license is available here: - http://source.icu-project.org/repos/icu/icu/trunk/license.html +-------------------------------------------------------------------------------- -/* - * Copyright (C) 1999-2010, International Business Machines - * Corporation and others. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * provided that the above copyright notice(s) and this permission notice appear - * in all copies of the Software and that both the above copyright notice(s) and - * this permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE - * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR - * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization of the - * copyright holder. - */ - -The following license applies to the Snowball stemmers: +371. Group: org.jetbrains.kotlin Name: kotlin-script-runtime Version: 1.9.10 -Copyright (c) 2001, Dr Martin Porter -Copyright (c) 2002, Richard Boulton -All rights reserved. +POM Project URL: https://kotlinlang.org/ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holders nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. +-------------------------------------------------------------------------------- -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +372. Group: org.jetbrains.kotlin Name: kotlin-scripting-common Version: 1.7.10 -The following license applies to the KStemmer: +POM Project URL: https://kotlinlang.org/ -Copyright © 2003, -Center for Intelligent Information Retrieval, -University of Massachusetts, Amherst. -All rights reserved. +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +-------------------------------------------------------------------------------- -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +373. Group: org.jetbrains.kotlin Name: kotlin-scripting-common Version: 1.9.10 -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. +POM Project URL: https://kotlinlang.org/ -3. The names "Center for Intelligent Information Retrieval" and -"University of Massachusetts" must not be used to endorse or promote products -derived from this software without prior written permission. To obtain -permission, contact info@ciir.cs.umass.edu. +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. +-------------------------------------------------------------------------------- -The following license applies to the Morfologik project: +374. Group: org.jetbrains.kotlin Name: kotlin-scripting-compiler-embeddable Version: 1.7.10 -Copyright (c) 2006 Dawid Weiss -Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski -All rights reserved. +POM Project URL: https://kotlinlang.org/ -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Morfologik nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +-------------------------------------------------------------------------------- -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +375. Group: org.jetbrains.kotlin Name: kotlin-scripting-compiler-embeddable Version: 1.9.10 ---- +POM Project URL: https://kotlinlang.org/ -The dictionary comes from Morfologik project. Morfologik uses data from -Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and -is licenced on the terms of (inter alia) LGPL and Creative Commons -ShareAlike. The part-of-speech tags were added in Morfologik project and -are not found in the data from sjp.pl. The tagset is similar to IPI PAN -tagset. +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt ---- +-------------------------------------------------------------------------------- -The following license applies to the Morfeusz project, -used by org.apache.lucene.analysis.morfologik. +376. Group: org.jetbrains.kotlin Name: kotlin-scripting-compiler-impl-embeddable Version: 1.7.10 -BSD-licensed dictionary of Polish (SGJP) -http://sgjp.pl/morfeusz/ +POM Project URL: https://kotlinlang.org/ -Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, -Marcin Woliński, Robert Wołosz +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -All rights reserved. +-------------------------------------------------------------------------------- -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +377. Group: org.jetbrains.kotlin Name: kotlin-scripting-compiler-impl-embeddable Version: 1.9.10 -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +POM Project URL: https://kotlinlang.org/ -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +378. Group: org.jetbrains.kotlin Name: kotlin-scripting-jvm Version: 1.7.10 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +379. Group: org.jetbrains.kotlin Name: kotlin-scripting-jvm Version: 1.9.10 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +380. Group: org.jetbrains.kotlin Name: kotlin-stdlib Version: 1.9.0 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +381. Group: org.jetbrains.kotlin Name: kotlin-stdlib Version: 1.9.10 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +382. Group: org.jetbrains.kotlin Name: kotlin-stdlib Version: 1.9.22 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +383. Group: org.jetbrains.kotlin Name: kotlin-stdlib Version: 1.9.23 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +384. Group: org.jetbrains.kotlin Name: kotlin-stdlib-common Version: 1.9.0 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +385. Group: org.jetbrains.kotlin Name: kotlin-stdlib-common Version: 1.9.10 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +386. Group: org.jetbrains.kotlin Name: kotlin-stdlib-common Version: 1.9.22 + +No license information found + +387. Group: org.jetbrains.kotlin Name: kotlin-stdlib-common Version: 1.9.23 + +No license information found + +388. Group: org.jetbrains.kotlin Name: kotlin-stdlib-jdk7 Version: 1.9.0 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +389. Group: org.jetbrains.kotlin Name: kotlin-stdlib-jdk8 Version: 1.9.0 + +POM Project URL: https://kotlinlang.org/ + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +390. Group: org.jetbrains.kotlinx Name: kotlinx-datetime Version: 0.3.2 + +No license information found + +391. Group: org.jetbrains.kotlinx Name: kotlinx-datetime-jvm Version: 0.3.2 + +POM Project URL: https://github.com/Kotlin/kotlinx-datetime + +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +392. Group: org.jetbrains.kotlinx Name: kotlinx-serialization-core Version: 1.0.1 + +No license information found + +393. Group: org.jetbrains.kotlinx Name: kotlinx-serialization-core-jvm Version: 1.4.0 + +POM Project URL: https://github.com/Kotlin/kotlinx.serialization + +POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +394. Group: org.jline Name: jline Version: 3.25.0 + +POM License: The BSD License - https://opensource.org/licenses/BSD-3-Clause + +-------------------------------------------------------------------------------- + +395. Group: org.json Name: json Version: 20231013 + +POM Project URL: https://github.com/douglascrockford/JSON-java + +POM License: Public Domain - https://github.com/stleary/JSON-java/blob/master/LICENSE + +-------------------------------------------------------------------------------- + +396. Group: org.latencyutils Name: LatencyUtils Version: 2.0.3 + +POM Project URL: http://latencyutils.github.io/LatencyUtils/ + +POM License: Public Domain, per Creative Commons CC0 - http://creativecommons.org/publicdomain/zero/1.0/ + +-------------------------------------------------------------------------------- + +397. Group: org.locationtech.jts Name: jts-core Version: 1.15.0 + +POM License: Eclipse Distribution License - v 1.0 - https://github.com/locationtech/jts/blob/master/LICENSE_EDLv1.txt + +POM License: Eclipse Publish License, Version 1.0 - https://github.com/locationtech/jts/blob/master/LICENSE_EPLv1.txt + +-------------------------------------------------------------------------------- + +398. Group: org.locationtech.spatial4j Name: spatial4j Version: 0.7 + +Manifest Project URL: http://www.locationtech.org/ + +POM Project URL: https://projects.eclipse.org/projects/locationtech.spatial4j + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- ---- +399. Group: org.lz4 Name: lz4-java Version: 1.8.0 -core/src/java/org/apache/lucene/util/compress/LZ4.java is a Java -implementation of the LZ4 (https://github.com/lz4/lz4/tree/dev/lib) -compression format for Lucene's DataInput/DataOutput abstractions. +POM Project URL: https://github.com/lz4/lz4-java -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +-------------------------------------------------------------------------------- -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +400. Group: org.mapdb Name: elsa Version: 3.0.0-M5 -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. +POM Project URL: http://www.mapdb.org -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +-------------------------------------------------------------------------------- - **************************************** +401. Group: org.mapdb Name: mapdb Version: 3.1.0 -Apache Lucene -Copyright 2001-2021 The Apache Software Foundation +POM Project URL: http://www.mapdb.org -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -Includes software from other Apache Software Foundation projects, -including, but not limited to: - - Apache Ant - - Apache Jakarta Regexp - - Apache Commons - - Apache Xerces +-------------------------------------------------------------------------------- -ICU4J, (under analysis/icu) is licensed under an MIT styles license -and Copyright (c) 1995-2008 International Business Machines Corporation and others +402. Group: org.mongodb Name: bson Version: 4.7.1 -Some data files (under analysis/icu/src/data) are derived from Unicode data such -as the Unicode Character Database. See http://unicode.org/copyright.html for more -details. +POM Project URL: https://bsonspec.org -Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is -BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/ +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were -automatically generated with the moman/finenight FSA library, created by -Jean-Philippe Barrette-LaPierre. This library is available under an MIT license, -see http://sites.google.com/site/rrettesite/moman and -http://bitbucket.org/jpbarrette/moman/overview/ +-------------------------------------------------------------------------------- -The class org.apache.lucene.util.WeakIdentityMap was derived from -the Apache CXF project and is Apache License 2.0. +403. Group: org.mongodb Name: bson-record-codec Version: 4.7.1 -The class org.apache.lucene.util.compress.LZ4 is a Java rewrite of the LZ4 -compression library (https://github.com/lz4/lz4/tree/dev/lib) that is licensed -under the 2-clause BSD license. -(https://opensource.org/licenses/bsd-license.php) +POM Project URL: https://www.mongodb.com/ -The Google Code Prettify is Apache License 2.0. -See http://code.google.com/p/google-code-prettify/ +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -JUnit (junit-4.10) is licensed under the Common Public License v. 1.0 -See http://junit.sourceforge.net/cpl-v10.html +-------------------------------------------------------------------------------- -This product includes code (JaspellTernarySearchTrie) from Java Spelling Checkin -g Package (jaspell): http://jaspell.sourceforge.net/ -License: The BSD License (http://www.opensource.org/licenses/bsd-license.php) +404. Group: org.mongodb Name: mongodb-driver-core Version: 4.7.1 -The snowball stemmers in - analysis/common/src/java/net/sf/snowball -were developed by Martin Porter and Richard Boulton. -The snowball stopword lists in - analysis/common/src/resources/org/apache/lucene/analysis/snowball -were developed by Martin Porter and Richard Boulton. -The full snowball package is available from - http://snowball.tartarus.org/ +POM Project URL: https://www.mongodb.com/ -The KStem stemmer in - analysis/common/src/org/apache/lucene/analysis/en -was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst) -under the BSD-license. +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -The Arabic,Persian,Romanian,Bulgarian, Hindi and Bengali analyzers (common) come with a default -stopword list that is BSD-licensed created by Jacques Savoy. These files reside in: -analysis/common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt, -analysis/common/src/resources/org/apache/lucene/analysis/bn/stopwords.txt -See http://members.unine.ch/jacques.savoy/clef/index.html. +-------------------------------------------------------------------------------- -The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers -(common) are based on BSD-licensed reference implementations created by Jacques Savoy and -Ljiljana Dolamic. These files reside in: -analysis/common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java -analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java +405. Group: org.mongodb Name: mongodb-driver-sync Version: 4.7.1 -The Stempel analyzer (stempel) includes BSD-licensed software developed -by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil, -and Edmond Nolan. +POM Project URL: https://www.mongodb.com/ -The Polish analyzer (stempel) comes with a default -stopword list that is BSD-licensed created by the Carrot2 project. The file resides -in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt. -See http://project.carrot2.org/license.html. +POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -The SmartChineseAnalyzer source code (smartcn) was -provided by Xiaoping Gao and copyright 2009 by www.imdict.net. +-------------------------------------------------------------------------------- -WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) -is derived from Unicode data such as the Unicode Character Database. -See http://unicode.org/copyright.html for more details. +406. Group: org.mozilla Name: rhino Version: 1.7.12 -The Morfologik analyzer (morfologik) includes BSD-licensed software -developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/). +POM Project URL: https://developer.mozilla.org/en/Rhino -Morfologik uses data from Polish ispell/myspell dictionary -(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia) -LGPL and Creative Commons ShareAlike. +POM License: Mozilla Public License, Version 2.0 - http://www.mozilla.org/MPL/2.0/index.txt -Morfologic includes data from BSD-licensed dictionary of Polish (SGJP) -(http://sgjp.pl/morfeusz/) +Embedded license: -Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original -source code for this can be found at http://www.eclipse.org/jetty/downloads.php + **************************************** -=========================================================================== -Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration -=========================================================================== +The majority of Rhino is licensed under the MPL 2.0: -This software includes a binary and/or source version of data from +Mozilla Public License Version 2.0 +================================== - mecab-ipadic-2.7.0-20070801 +1. Definitions +-------------- -which can be obtained from +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. - http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. -or +1.3. "Contribution" + means Covered Software of a particular Contributor. - http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. -=========================================================================== -mecab-ipadic-2.7.0-20070801 Notice -=========================================================================== +1.5. "Incompatible With Secondary Licenses" + means -Nara Institute of Science and Technology (NAIST), -the copyright holders, disclaims all warranties with regard to this -software, including all implied warranties of merchantability and -fitness, in no event shall NAIST be liable for -any special, indirect or consequential damages or any damages -whatsoever resulting from loss of use, data or profits, whether in an -action of contract, negligence or other tortuous action, arising out -of or in connection with the use or performance of this software. + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or -A large portion of the dictionary entries -originate from ICOT Free Software. The following conditions for ICOT -Free Software applies to the current dictionary as well. + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. -Each User may also freely distribute the Program, whether in its -original form or modified, to any third party or parties, PROVIDED -that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear -on, or be attached to, the Program, which is distributed substantially -in the same form as set out herein and that such intended -distribution, if actually made, will neither violate or otherwise -contravene any of the laws and regulations of the countries having -jurisdiction over the User or the intended distribution itself. +1.6. "Executable Form" + means any form of the work other than Source Code Form. -NO WARRANTY +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. -The program was produced on an experimental basis in the course of the -research and development conducted during the project and is provided -to users as so produced on an experimental basis. Accordingly, the -program is provided without any warranty whatsoever, whether express, -implied, statutory or otherwise. The term "warranty" used herein -includes, but is not limited to, any warranty of the quality, -performance, merchantability and fitness for a particular purpose of -the program and the nonexistence of any infringement or violation of -any right of any third party. +1.8. "License" + means this document. -Each user of the program will agree and understand, and be deemed to -have agreed and understood, that there is no warranty whatsoever for -the program and, accordingly, the entire risk arising from or -otherwise connected with the program is assumed by the user. +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. -Therefore, neither ICOT, the copyright holder, or any other -organization that participated in or was otherwise related to the -development of the program and their respective officials, directors, -officers and other employees shall be held liable for any and all -damages, including, without limitation, general, special, incidental -and consequential damages, arising out of or otherwise in connection -with the use or inability to use the program or any product, material -or result produced or otherwise obtained by using the program, -regardless of whether they have been advised of, or otherwise had -knowledge of, the possibility of such damages at any time during the -project or thereafter. Each user will be deemed to have agreed to the -foregoing by his or her commencement of use of the program. The term -"use" as used herein includes, but is not limited to, the use, -modification, copying and distribution of the program and the -production of secondary products from the program. +1.10. "Modifications" + means any of the following: -In the case where the program, whether in its original form or -modified, was distributed or delivered to or received by a user from -any person, organization or entity other than ICOT, unless it makes or -grants independently of ICOT any specific warranty to the user in -writing, such person, organization or entity, will also be exempted -from and not be held liable to the user for any such damages as noted -above as far as the program is concerned. + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or -=========================================================================== -Nori Korean Morphological Analyzer - Apache Lucene Integration -=========================================================================== + (b) any new file in Source Code Form that contains any Covered + Software. -This software includes a binary and/or source version of data from +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. - mecab-ko-dic-2.0.3-20170922 +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. -which can be obtained from +1.13. "Source Code Form" + means the form of the work preferred for making modifications. - https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + 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. License Grants and Conditions +-------------------------------- -387. Group: org.apache.maven Name: maven-artifact Version: 3.0.3 +2.1. Grants -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: -Embedded license: +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and - **************************************** +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. +2.2. Effective Date - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +2.3. Limitations on Grant Scope - 1. Definitions. +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +(a) for any code that a Contributor has removed from Covered Software; + or - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +2.4. Subsequent Licenses - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +2.5. Representation - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +2.6. Fair Use - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +2.7. Conditions - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +3. Responsibilities +------------------- - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +3.1. Distribution of Source Form - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +3.2. Distribution of Executable Form - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +If You distribute Covered Software in Executable Form then: - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +3.3. Distribution of a Larger Work - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +3.5. Application of Additional Terms - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. - END OF TERMS AND CONDITIONS +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- - APPENDIX: How to apply the Apache License to your work. +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 Software 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 placed in a text file included with all distributions of the Covered +Software under this License. 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. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +5. Termination +-------------- - Copyright [yyyy] [name of copyright owner] +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. - http://www.apache.org/licenses/LICENSE-2.0 +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software 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 Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any 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 Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ - **************************************** +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, 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. * +* * +************************************************************************ +8. Litigation +------------- -Maven Artifact -Copyright 2001-2011 The Apache Software Foundation +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +9. Miscellaneous +---------------- +This License represents the complete agreement concerning the 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. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. +10. Versions of the License +--------------------------- --------------------------------------------------------------------------------- +10.1. New Versions -388. Group: org.apache.maven Name: maven-artifact Version: 3.8.8 +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +10.2. Effect of New Versions -Embedded license: +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. - **************************************** +10.3. Modified Versions +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. - 1. Definitions. +Exhibit A - Source Code Form License Notice +------------------------------------------- - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +You may add additional accurate notices of copyright ownership. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. + **************************************** - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at http://mozilla.org/MPL/2.0/. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +USING IDSWITCH GENERATOR TOOL - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +Usage: +java org.mozilla.javascript.tools.idswitch.Main - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +The main purpose of this utility is to generate Java code to map strings to some ids that can be used, for example, in a switch statement. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +The utility scans the input file for lines with the following structure: - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +// #string_id_map# +... +// #generated# +... +// #/generated# +... +// #/string_id_map# - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +Then every line in is scanned for the pattern: +^[ \t]*Id_([0-9a-zA-Z_]+)[ \t]*=.*$ - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +Each such patterns adds a mapping form string $1 to Id_\$ or if the line also contains the pattern //\s*#string=\s*([^#]+)\s*#, then it adds map of $1 in this pattern to Id_\$ - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +After that lines in are replaced by a code block that sets variable "id" to Id_ if variable "s" equals (or value defined by //#string=...# construction in the line with Id_) or 0 otherwise. +If the new code for is identical to old one, the file is not touched otherwise is overwritten by the new code and a time stamp is appended after #generated#. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +For example, if file x.java contains: - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +// #string_id_map# - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. + private int getId(String s) { + int id; +// #generated# Initial version +// #/generated# + return id; + } - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + private static final int + Id_x = 1, + Id_y = 2, + Id_hello = 3, // #string = Hello, World! # + Id_symbols = 4, // #string=<<*Symbols*>># + Id_nice = 5, + Id_for = 6, + Id_bar = 7; - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +// #/string_id_map# - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +.... - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + private double getFieldValue(String s) { - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +// #string_id_map# + final int + Id_field1 = 1, + Id_field2 = 2, + Id_field3 = 3, + Id_one_more_field = 4; // #string = ONE%MORE%FIELD# - END OF TERMS AND CONDITIONS + int id; +// #generated# Initial version +// #/generated# +// #/string_id_map# + switch (id) { + case Id_field1: return field1; + case Id_field2: return field2; + case Id_field3: return field3; + case Id_one_more_field: return one_more_field; + } + throw new RuntimeException("No such field"); + } - APPENDIX: How to apply the Apache License to your work. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +then invocation - Copyright [yyyy] [name of copyright owner] +java org.mozilla.javascript.tools.idswitch.Main x.java - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +would replace that by a code fragment similar to: - http://www.apache.org/licenses/LICENSE-2.0 +// #string_id_map# - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + private int getId(String s) { + int id; +// #generated# Last update: 2001-05-25 18:00:24 GMT+02:00 + L0: { id = 0; String X = null; int c; + L: switch (s.length()) { + case 1: c=s.charAt(0); + if (c=='x') { id=Id_x; break L0; } + else if (c=='y') { id=Id_y; break L0; } + break L; + case 3: c=s.charAt(0); + if (c=='b') { if (s.charAt(2)=='r' && s.charAt(1)=='a') {id=Id_bar; break L0;} } + else if (c=='f') { if (s.charAt(2)=='r' && s.charAt(1)=='o') {id=Id_for; break L0;} } + break L; + case 4: X="nice";id=Id_nice; break L; + case 13: c=s.charAt(0); + if (c=='<') { X="<<*Symbols*>>";id=Id_symbols; } + else if (c=='H') { X="Hello, World!";id=Id_hello; } + break L; + } + if (X!=null && X!=s && !X.equals(s)) id = 0; + } +// #/generated# + return id; + } - **************************************** + private static final int + Id_x = 1, + Id_y = 2, + Id_hello = 3, // #string = Hello, World! # + Id_symbols = 4, // #string=<<*Symbols*>># + Id_nice = 5, + Id_for = 6, + Id_bar = 7; +// #/string_id_map# -Maven Artifact -Copyright 2001-2023 The Apache Software Foundation +.... -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + private double getFieldValue(String s) { +// #string_id_map# + final int + Id_field1 = 1, + Id_field2 = 2, + Id_field3 = 3, + Id_one_more_field = 4; // #string = ONE%MORE%FIELD# + int id; +// #generated# Last update: 2001-05-25 16:48:50 GMT+02:00 + L0: { id = 0; String X = null; int c; + int s_length = s.length(); + if (s_length==6) { + c=s.charAt(5); + if (c=='1') { X="field1";id=Id_field1; } + else if (c=='2') { X="field2";id=Id_field2; } + else if (c=='3') { X="field3";id=Id_field3; } + } + else if (s_length==14) { X="ONE%MORE%FIELD";id=Id_one_more_field; } + if (X!=null && X!=s && !X.equals(s)) id = 0; + } +// #/generated# +// #/string_id_map# + switch (id) { + case Id_field1: return field1; + case Id_field2: return field2; + case Id_field3: return field3; + case Id_one_more_field: return one_more_field; + } + throw new RuntimeException("No such field"); + } -------------------------------------------------------------------------------- -389. Group: org.apache.mina Name: mina-core Version: 2.2.2 +407. Group: org.opensearch Name: opensearch Version: 1.3.14 -Manifest Project URL: https://mina.apache.org/ - -POM License: Apache 2.0 License - https://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/opensearch-project/OpenSearch.git -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -51519,22 +49781,24 @@ Embedded license: **************************************** +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -Apache MINA Core -Copyright 2004-2023 Apache MINA Project - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). +This product includes software developed by +Joda.org (http://www.joda.org/). -------------------------------------------------------------------------------- -390. Group: org.apache.parquet Name: parquet-avro Version: 1.13.1 +408. Group: org.opensearch Name: opensearch-cli Version: 1.3.14 -POM Project URL: https://parquet.apache.org - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://github.com/opensearch-project/OpenSearch.git POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -51720,43 +49984,51 @@ Embedded license: END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- - -This product includes code from Apache Avro. - -Copyright: 2014 The Apache Software Foundation. -Home page: https://avro.apache.org/ -License: http://www.apache.org/licenses/LICENSE-2.0 + APPENDIX: How to apply the Apache License to your work. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - **************************************** + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -Apache Parquet MR (Incubating) -Copyright 2014-2015 The Apache Software Foundation + http://www.apache.org/licenses/LICENSE-2.0 -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. --------------------------------------------------------------------------------- + **************************************** -This product includes code from Apache Avro, which includes the following in -its NOTICE file: +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors - Apache Avro - Copyright 2010-2015 The Apache Software Foundation +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). +This product includes software developed by +Joda.org (http://www.joda.org/). -------------------------------------------------------------------------------- -391. Group: org.apache.parquet Name: parquet-column Version: 1.13.1 - -POM Project URL: https://parquet.apache.org +409. Group: org.opensearch Name: opensearch-core Version: 1.3.14 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://github.com/opensearch-project/OpenSearch.git POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -51942,33 +50214,51 @@ Embedded license: END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -This product depends on fastutil and includes it in this binary artifact. -Fastutil provides type-specific collection implementations. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Copyright: 2002-2014 Sebastiano Vigna -Home page: http://fasutil.di.unimi.it/ -License: http://www.apache.org/licenses/LICENSE-2.0.html + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -392. Group: org.apache.parquet Name: parquet-common Version: 1.13.1 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -POM Project URL: https://parquet.apache.org + **************************************** -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch --------------------------------------------------------------------------------- +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). + +This product includes software developed by +Joda.org (http://www.joda.org/). -393. Group: org.apache.parquet Name: parquet-encoding Version: 1.13.1 +-------------------------------------------------------------------------------- -POM Project URL: https://parquet.apache.org +410. Group: org.opensearch Name: opensearch-geo Version: 1.3.14 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://github.com/opensearch-project/OpenSearch.git POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -52154,35 +50444,51 @@ Embedded license: END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -This project includes code from Daniel Lemire's JavaFastPFOR project in this -binary artifact. The "Lemire" bit packing classes produced by parquet-generator -are derived from the JavaFastPFOR project. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Copyright: 2013 Daniel Lemire -Home page: http://lemire.me/en/ -Project page: https://github.com/lemire/JavaFastPFOR -License: Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -394. Group: org.apache.parquet Name: parquet-format-structures Version: 1.13.1 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -POM Project URL: https://parquet.apache.org/ + **************************************** -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch --------------------------------------------------------------------------------- +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). -395. Group: org.apache.parquet Name: parquet-hadoop Version: 1.13.1 +This product includes software developed by +Joda.org (http://www.joda.org/). -POM Project URL: https://parquet.apache.org +-------------------------------------------------------------------------------- -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +411. Group: org.opensearch Name: opensearch-secure-sm Version: 1.3.14 + +POM Project URL: https://github.com/opensearch-project/OpenSearch.git POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -52368,25 +50674,51 @@ Embedded license: END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -This product includes code from Twitter's ElephantBird project. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -* parquet-hadoop's UnmaterializableRecordCounter.java includes code from - ElephantBird's LzoRecordReader.java + Copyright [yyyy] [name of copyright owner] -Copyright: 2012-2014 Twitter -Home page: https://github.com/twitter/elephant-bird -License: http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 --------------------------------------------------------------------------------- + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -396. Group: org.apache.parquet Name: parquet-jackson Version: 1.13.1 + **************************************** -POM Project URL: https://parquet.apache.org +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch + +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). + +This product includes software developed by +Joda.org (http://www.joda.org/). + +-------------------------------------------------------------------------------- + +412. Group: org.opensearch Name: opensearch-x-content Version: 1.3.14 + +POM Project URL: https://github.com/opensearch-project/OpenSearch.git POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt @@ -52572,49 +50904,58 @@ Embedded license: END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -This product depends on Jackson and includes it in this binary artifact. -Jackson is a high-performance JSON processor. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Copyright: 2007-2015 Tatu Saloranta and other contributors -Home page: http://jackson.codehaus.org/ -License: http://www.apache.org/licenses/LICENSE-2.0.txt + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -# Jackson JSON processor + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers. + **************************************** -## Licensing +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -Jackson 2.x core and extension components are licensed under Apache License 2.0 -To find the details that apply to this artifact see the accompanying LICENSE file. +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch -## Credits +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). -A list of contributors may be found from CREDITS(-2.x) file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. +This product includes software developed by +Joda.org (http://www.joda.org/). -------------------------------------------------------------------------------- -397. Group: org.apache.servicemix.bundles Name: org.apache.servicemix.bundles.antlr Version: 2.7.7_5 +413. Group: org.opensearch.client Name: opensearch-java Version: 2.8.1 -Manifest Project URL: http://www.apache.org/ +POM Project URL: https://github.com/opensearch-project/opensearch-java/ -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: The Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -52819,20 +51160,20 @@ Embedded license: **************************************** +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -Apache ServiceMix -Copyright 2005-2011 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - +This product includes software developed by +Elasticsearch Java Client +Copyright 2021 Elasticsearch B.V. -------------------------------------------------------------------------------- -398. Group: org.apache.yetus Name: audience-annotations Version: 0.12.0 +414. Group: org.opensearch.client Name: opensearch-rest-client Version: 2.7.0 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://github.com/opensearch-project/OpenSearch.git + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -53043,20 +51384,26 @@ Embedded license: **************************************** +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -Apache Yetus - Audience Annotations -Copyright 2015-2020 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). +This product includes software developed by +Joda.org (http://www.joda.org/). -------------------------------------------------------------------------------- -399. Group: org.apache.yetus Name: audience-annotations Version: 0.13.0 +415. Group: org.opensearch.client Name: opensearch-rest-high-level-client Version: 1.3.14 -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://github.com/opensearch-project/OpenSearch.git + +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: @@ -53267,141 +51614,27 @@ Embedded license: **************************************** +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -Apache Yetus - Audience Annotations -Copyright 2015-2020 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - - --------------------------------------------------------------------------------- - -400. Group: org.apache.zookeeper Name: zookeeper Version: 3.7.2 - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch -401. Group: org.apache.zookeeper Name: zookeeper-jute Version: 3.7.2 +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +This product includes software developed by +Joda.org (http://www.joda.org/). -------------------------------------------------------------------------------- -402. Group: org.bitbucket.b_c Name: jose4j Version: 0.9.3 +416. Group: org.opensearch.plugin Name: aggs-matrix-stats-client Version: 1.3.14 -POM Project URL: https://bitbucket.org/b_c/jose4j/ +POM Project URL: https://github.com/opensearch-project/OpenSearch.git POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt --------------------------------------------------------------------------------- - -403. Group: org.bouncycastle Name: bcpkix-jdk18on Version: 1.76 - -POM Project URL: https://www.bouncycastle.org/java.html - -POM License: Bouncy Castle Licence - https://www.bouncycastle.org/licence.html - --------------------------------------------------------------------------------- - -404. Group: org.bouncycastle Name: bcprov-jdk18on Version: 1.76 - -POM Project URL: https://www.bouncycastle.org/java.html - -POM License: Bouncy Castle Licence - https://www.bouncycastle.org/licence.html - --------------------------------------------------------------------------------- - -405. Group: org.bouncycastle Name: bcutil-jdk18on Version: 1.76 - -POM Project URL: https://www.bouncycastle.org/java.html - -POM License: Bouncy Castle Licence - https://www.bouncycastle.org/licence.html - --------------------------------------------------------------------------------- - -406. Group: org.checkerframework Name: checker-qual Version: 3.33.0 - -Manifest License: MIT (Not packaged) - -POM Project URL: https://checkerframework.org/ - -POM License: The MIT License - http://opensource.org/licenses/MIT - -Embedded license: - - **************************************** - -Checker Framework qualifiers -Copyright 2004-present by the Checker Framework developers - -MIT License: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - --------------------------------------------------------------------------------- - -407. Group: org.checkerframework Name: checker-qual Version: 3.37.0 - -Manifest License: MIT (Not packaged) - -POM Project URL: https://checkerframework.org/ - -POM License: The MIT License - http://opensource.org/licenses/MIT - -Embedded license: - - **************************************** - -Checker Framework qualifiers -Copyright 2004-present by the Checker Framework developers - -MIT License: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - --------------------------------------------------------------------------------- - -408. Group: org.codehaus.jettison Name: jettison Version: 1.5.4 - -POM Project URL: https://github.com/jettison-json/jettison - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - Embedded license: **************************************** @@ -53584,7 +51817,18 @@ Embedded license: END OF TERMS AND CONDITIONS - Copyright 2006 Envoi Solutions LLC + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -53598,710 +51842,492 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + **************************************** --------------------------------------------------------------------------------- - -409. Group: org.codehaus.mojo Name: animal-sniffer-annotations Version: 1.23 - -POM License: MIT license - https://spdx.org/licenses/MIT.txt - -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -410. Group: org.codehaus.plexus Name: plexus-utils Version: 3.3.1 - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - -Embedded license: +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors - **************************************** +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). - **************************************** +This product includes software developed by +Joda.org (http://www.joda.org/). -This product includes software developed by the Indiana University - Extreme! Lab (http://www.extreme.indiana.edu/). - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - -This product includes software developed by -ThoughtWorks (http://www.thoughtworks.com). - -This product includes software developed by -javolution (http://javolution.org/). - -This product includes software developed by -Rome (https://rome.dev.java.net/). -------------------------------------------------------------------------------- -411. Group: org.codehaus.woodstox Name: stax2-api Version: 4.2.1 +417. Group: org.opensearch.plugin Name: lang-mustache-client Version: 1.3.14 -Project URL: http://github.com/FasterXML/stax2-api +POM Project URL: https://github.com/opensearch-project/OpenSearch.git POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -POM License: The BSD License - http://www.opensource.org/licenses/bsd-license.php - Embedded license: **************************************** -This copy of Stax2 API is licensed under the -Simplified BSD License (also known as "2-clause BSD", or "FreeBSD License") -See the License for details about distribution rights, and the -specific rights regarding derivate works. - -You may obtain a copy of the License at: - -http://www.opensource.org/licenses/bsd-license.php - -with details of: - - = FasterXML.com - = 2010- - --------------------------------------------------------------------------------- - -412. Group: org.conscrypt Name: conscrypt-openjdk-uber Version: 2.5.2 - -POM Project URL: https://conscrypt.org/ - -POM License: Apache 2 - https://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -413. Group: org.curioswitch.curiostack Name: protobuf-jackson Version: 2.2.0 -POM Project URL: https://github.com/curioswitch/protobuf-jackson - -POM License: MIT License - https://opensource.org/licenses/MIT - --------------------------------------------------------------------------------- - -414. Group: org.eclipse Name: yasson Version: 2.0.2 - -Manifest Project URL: http://www.oracle.com/ - -POM Project URL: https://projects.eclipse.org/projects/ee4j.yasson - -POM License: Eclipse Distribution License v. 1.0 - http://www.eclipse.org/org/documents/edl-v10.php - -POM License: Eclipse Public License v. 2.0 - http://www.eclipse.org/legal/epl-v20.html + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Embedded license: + 1. Definitions. - **************************************** + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -# Eclipse Public License - v 2.0 + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - 1. DEFINITIONS - - “Contribution” means: - - a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works. - - “Contributor” means any person or entity that Distributes the Program. - - “Licensed Patents” mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - - “Program” means the Contributions Distributed in accordance with this Agreement. - - “Recipient” means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors. - - “Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. - - “Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof. - - “Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy. - - “Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files. - - “Secondary License” means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor. - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works. - b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3). - - 3. REQUIREMENTS - - 3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and - b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and - iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3. - - 3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and - b) a copy of this Agreement must be included with each copy of the Program. - - 3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (‘notices’) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices. - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify every other Contributor (“Indemnified Contributor”) against any losses, damages and costs (collectively “Losses”) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version. - - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement. - Exhibit A – Form of Secondary Licenses Notice - - “This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}.” - - Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. - - You may add additional accurate notices of copyright ownership. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -# Eclipse Distribution License - v 1.0 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - All rights reserved. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - **************************************** + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -# Notices for Eclipse Yasson + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -This content is produced and maintained by the Eclipse Yasson project. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -* Project home: https://projects.eclipse.org/projects/ee4j.yasson + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -## Trademarks + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -Eclipse Yasson is a trademark of the Eclipse Foundation. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -## Copyright + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -## Declared Project Licenses + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-v20.html, or the Eclipse Distribution License -v. 1.0 which is available at http://www.eclipse.org/org/documents/edl-v10.php. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -## Source Code + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -The project maintains the following source code repositories: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -* https://github.com/eclipse/yasson -* https://github.com/eclipse-ee4j/yasson + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -## Third-party Content + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -cdi-api 2.0 (JSR 365: Contexts and Dependency Injection for Java (2.0) + END OF TERMS AND CONDITIONS + APPENDIX: How to apply the Apache License to your work. -## Cryptography + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. --------------------------------------------------------------------------------- + Copyright [yyyy] [name of copyright owner] -415. Group: org.eclipse.collections Name: eclipse-collections Version: 12.0.0.M3 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -Manifest Project URL: https://github.com/eclipse/eclipse-collections/eclipse-collections + http://www.apache.org/licenses/LICENSE-2.0 -Manifest License: "Eclipse Public License - v 1.0";link="https://www.eclipse.org/legal/epl-v10.html","Eclipse Distribution License - v 1.0";link="https://www.eclipse.org/licenses/edl-v10.html" (Not packaged) + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -POM License: Eclipse Distribution License - v 1.0 - https://www.eclipse.org/licenses/edl-v10.html + **************************************** -POM License: Eclipse Public License - v 1.0 - https://www.eclipse.org/legal/epl-v10.html +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors --------------------------------------------------------------------------------- +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch -416. Group: org.eclipse.collections Name: eclipse-collections-api Version: 12.0.0.M3 +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). -Manifest Project URL: https://github.com/eclipse/eclipse-collections/eclipse-collections-api +This product includes software developed by +Joda.org (http://www.joda.org/). -Manifest License: "Eclipse Public License - v 1.0";link="https://www.eclipse.org/legal/epl-v10.html","Eclipse Distribution License - v 1.0";link="https://www.eclipse.org/licenses/edl-v10.html" (Not packaged) +-------------------------------------------------------------------------------- -POM License: Eclipse Distribution License - v 1.0 - https://www.eclipse.org/licenses/edl-v10.html +418. Group: org.opensearch.plugin Name: mapper-extras-client Version: 1.3.14 -POM License: Eclipse Public License - v 1.0 - https://www.eclipse.org/legal/epl-v10.html +POM Project URL: https://github.com/opensearch-project/OpenSearch.git --------------------------------------------------------------------------------- +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -417. Group: org.eclipse.collections Name: eclipse-collections-forkjoin Version: 12.0.0.M3 +Embedded license: -POM License: Eclipse Distribution License - v 1.0 - https://www.eclipse.org/licenses/edl-v10.html + **************************************** -POM License: Eclipse Public License - v 1.0 - https://www.eclipse.org/legal/epl-v10.html --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -418. Group: org.eclipse.jetty Name: jetty-alpn-conscrypt-server Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -Eclipse Public License - v 1.0 + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -1. DEFINITIONS + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -"Contribution" means: + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Contributor" means any person or entity that distributes the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -3. REQUIREMENTS + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -When the Program is made available in source code form: + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + END OF TERMS AND CONDITIONS -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + APPENDIX: How to apply the Apache License to your work. -4. COMMERCIAL DISTRIBUTION + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + Copyright [yyyy] [name of copyright owner] -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -5. NO WARRANTY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + **************************************** -6. DISCLAIMER OF LIABILITY +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch -7. GENERAL +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +This product includes software developed by +Joda.org (http://www.joda.org/). -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +-------------------------------------------------------------------------------- -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +419. Group: org.opensearch.plugin Name: parent-join-client Version: 1.3.14 -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM Project URL: https://github.com/opensearch-project/OpenSearch.git -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +Embedded license: + + **************************************** Apache License @@ -54508,351 +52534,31 @@ any resulting litigation. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. - -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -org.eclipse.jetty.toolchain:jetty-schemas +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch ------- -Assorted +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +This product includes software developed by +Joda.org (http://www.joda.org/). -------------------------------------------------------------------------------- -419. Group: org.eclipse.jetty Name: jetty-alpn-java-server Version: 9.4.53.v20231009 - -Manifest Project URL: https://eclipse.org/jetty +420. Group: org.opensearch.plugin Name: rank-eval-client Version: 1.3.14 -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/opensearch-project/OpenSearch.git -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt Embedded license: **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. - - Apache License Version 2.0, January 2004 @@ -55044,365 +52750,217 @@ any resulting litigation. Copyright [yyyy] [name of copyright owner] - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ------- -MortBay + **************************************** -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. +OpenSearch (https://opensearch.org/) +Copyright OpenSearch Contributors -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util +This product includes software developed by +Elasticsearch (http://www.elastic.co). +Copyright 2009-2018 Elasticsearch -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +This product includes software developed by The Apache Software +Foundation (http://www.apache.org/). +This product includes software developed by +Joda.org (http://www.joda.org/). ------- -Mortbay +-------------------------------------------------------------------------------- -The following artifacts are CDDL + GPLv2 with classpath exception. +421. Group: org.ow2.asm Name: asm Version: 9.3 -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +Manifest Project URL: http://asm.ow2.org -org.eclipse.jetty.toolchain:jetty-schemas +Manifest License: BSD-3-Clause;link=https://asm.ow2.io/LICENSE.txt (Not packaged) ------- -Assorted +POM Project URL: http://asm.ow2.io/ -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +POM License: BSD-3-Clause - https://asm.ow2.io/license.html --------------------------------------------------------------------------------- +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -420. Group: org.eclipse.jetty Name: jetty-alpn-server Version: 9.4.53.v20231009 +-------------------------------------------------------------------------------- -Manifest Project URL: https://eclipse.org/jetty +422. Group: org.projectlombok Name: lombok Version: 1.18.22 -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://projectlombok.org -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php +POM License: The MIT License - https://projectlombok.org/LICENSE Embedded license: **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. +Copyright (C) 2009-2021 The Project Lombok Authors. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -Eclipse Public License - v 1.0 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +============================================================================== +Licenses for included components: -1. DEFINITIONS +org.ow2.asm:asm +org.ow2.asm:asm-analysis +org.ow2.asm:asm-commons +org.ow2.asm:asm-tree +org.ow2.asm:asm-util +ASM: a very small and fast Java bytecode manipulation framework + Copyright (c) 2000-2011 INRIA, France Telecom + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +rzwitserloot/com.zwitserloot.cmdreader + + Copyright © 2010 Reinier Zwitserloot. -"Contribution" means: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. -"Contributor" means any person or entity that distributes the Program. +------------------------------------------------------------------------------ -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. +projectlombok/lombok.patcher -"Program" means the Contributions distributed in accordance with this -Agreement. + Copyright (C) 2009-2021 The Project Lombok Authors. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. -3. REQUIREMENTS +------------------------------------------------------------------------------ + **************************************** -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: +# Project Lombok - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. +Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. +Never write another getter or equals method again, with one annotation your class has a fully featured builder, automate your logging variables, and much more. -When the Program is made available in source code form: +See [LICENSE] for the Project Lombok license. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. +Looking for professional support of Project Lombok? Lombok is now part of a [tidelift subscription]! -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. +For a list of all authors, see the [AUTHORS] file. -4. COMMERCIAL DISTRIBUTION +For complete project information, see [projectlombok.org] -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. +You can review our security policy via [SECURITY.md] -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +[LICENSE]: https://github.com/projectlombok/lombok/blob/master/LICENSE +[AUTHORS]: https://github.com/projectlombok/lombok/blob/master/AUTHORS +[SECURITY.md]: https://github.com/projectlombok/lombok/blob/master/SECURITY.md +[projectlombok.org]: https://projectlombok.org/ +[tidelift subscription]: https://tidelift.com/subscription/pkg/maven-org-projectlombok-lombok?utm_source=maven-org-projectlombok-lombok&utm_medium=referral&campaign=website -5. NO WARRANTY +-------------------------------------------------------------------------------- -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. +423. Group: org.reactivestreams Name: reactive-streams Version: 1.0.4 -6. DISCLAIMER OF LIABILITY +Manifest Project URL: http://reactive-streams.org -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +POM Project URL: http://www.reactive-streams.org/ -7. GENERAL +POM License: MIT-0 - https://spdx.org/licenses/MIT-0.html -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +424. Group: org.reflections Name: reflections Version: 0.10.2 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: http://github.com/ronmamo/reflections -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM License: WTFPL - http://www.wtfpl.net/ + +-------------------------------------------------------------------------------- + +425. Group: org.scala-lang Name: scala-library Version: 2.13.12 + +POM Project URL: https://www.scala-lang.org/ + +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0 +Embedded license: + **************************************** Apache License Version 2.0, January 2004 @@ -55608,355 +53166,167 @@ any resulting litigation. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. - -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +Scala +Copyright (c) 2002-2023 EPFL +Copyright (c) 2011-2023 Lightbend, Inc. -org.eclipse.jetty.toolchain:jetty-schemas +Scala includes software developed at +LAMP/EPFL (https://lamp.epfl.ch/) and +Lightbend, Inc. (https://www.lightbend.com/). ------- -Assorted +Licensed under the Apache License, Version 2.0 (the "License"). +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +This software includes projects with other licenses -- see `doc/LICENSE.md`. -------------------------------------------------------------------------------- -421. Group: org.eclipse.jetty Name: jetty-annotations Version: 9.4.53.v20231009 - -Manifest Project URL: https://eclipse.org/jetty +426. Group: org.slf4j Name: slf4j-api Version: 2.0.11 -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +Project URL: http://www.slf4j.org -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php +POM License: MIT License - http://www.opensource.org/licenses/mit-license.php Embedded license: **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. +Copyright (c) 2004-2022 QOS.ch Sarl (Switzerland) +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +-------------------------------------------------------------------------------- +427. Group: org.slf4j Name: slf4j-api Version: 2.0.6 -Eclipse Public License - v 1.0 +Manifest Project URL: http://www.qos.ch -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +POM Project URL: http://www.slf4j.org -1. DEFINITIONS +POM License: MIT License - http://www.opensource.org/licenses/mit-license.php -"Contribution" means: +-------------------------------------------------------------------------------- -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; +428. Group: org.slf4j Name: slf4j-api Version: 2.0.7 - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. +Project URL: http://www.slf4j.org -"Contributor" means any person or entity that distributes the Program. +POM License: MIT License - http://www.opensource.org/licenses/mit-license.php -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. +Embedded license: -"Program" means the Contributions distributed in accordance with this -Agreement. + **************************************** -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. +Copyright (c) 2004-2023 QOS.ch +All rights reserved. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -3. REQUIREMENTS +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. -When the Program is made available in source code form: - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. +-------------------------------------------------------------------------------- -4. COMMERCIAL DISTRIBUTION +429. Group: org.slf4j Name: slf4j-api Version: 2.0.9 -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. +Project URL: http://www.slf4j.org -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +POM License: MIT License - http://www.opensource.org/licenses/mit-license.php -5. NO WARRANTY +Embedded license: -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + **************************************** -6. DISCLAIMER OF LIABILITY +Copyright (c) 2004-2022 QOS.ch Sarl (Switzerland) +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +-------------------------------------------------------------------------------- -7. GENERAL +430. Group: org.slf4j Name: slf4j-reload4j Version: 1.7.36 -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +POM Project URL: http://reload4j.qos.ch -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +POM License: MIT License - http://www.opensource.org/licenses/mit-license.php -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +-------------------------------------------------------------------------------- -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +431. Group: org.springframework Name: spring-aop Version: 5.3.39 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM Project URL: https://github.com/spring-projects/spring-framework + +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +Embedded license: + **************************************** Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -56148,7 +53518,7 @@ any resulting litigation. you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -56156,357 +53526,439 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. - **************************************** +======================================================================= -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== +SPRING FRAMEWORK 5.3.39 SUBCOMPONENTS: -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. +Spring Framework 5.3.39 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. -Jetty is dual licensed under both - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): - and +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: -Jetty may be distributed under either license. +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. ------- -Eclipse +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 1999-2009, OW2 Consortium -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish +>>> CGLIB 3.3 (cglib:cglib:3.3): ------- -Oracle +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): ------- -Oracle OpenJDK +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: - * java.sun.security.ssl +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html +=============================================================================== ------- -OW2 +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. -org.ow2.asm:asm-commons -org.ow2.asm:asm + **************************************** +Spring Framework 5.3.39 +Copyright (c) 2002-2024 Pivotal, Inc. ------- -Apache +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. -The following artifacts are ASL2 licensed. +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl +-------------------------------------------------------------------------------- +432. Group: org.springframework Name: spring-beans Version: 5.3.39 ------- -MortBay +POM Project URL: https://github.com/spring-projects/spring-framework -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util +Embedded license: -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + **************************************** + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ ------- -Mortbay + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -The following artifacts are CDDL + GPLv2 with classpath exception. + 1. Definitions. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -org.eclipse.jetty.toolchain:jetty-schemas + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. ------- -Assorted + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. --------------------------------------------------------------------------------- + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -422. Group: org.eclipse.jetty Name: jetty-client Version: 9.4.53.v20231009 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Manifest Project URL: https://eclipse.org/jetty + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Embedded license: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - **************************************** + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -Eclipse Public License - v 1.0 + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -1. DEFINITIONS + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -"Contribution" means: + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -"Contributor" means any person or entity that distributes the Program. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -"Program" means the Contributions distributed in accordance with this -Agreement. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 5.3.39 SUBCOMPONENTS: + +Spring Framework 5.3.39 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. +Copyright (c) 1999-2009, OW2 Consortium -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. -3. REQUIREMENTS +>>> CGLIB 3.3 (cglib:cglib:3.3): -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. -When the Program is made available in source code form: +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: -4. COMMERCIAL DISTRIBUTION +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +=============================================================================== -5. NO WARRANTY +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. -6. DISCLAIMER OF LIABILITY + **************************************** -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +Spring Framework 5.3.39 +Copyright (c) 2002-2024 Pivotal, Inc. -7. GENERAL +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +-------------------------------------------------------------------------------- -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +433. Group: org.springframework Name: spring-context Version: 5.3.39 -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM Project URL: https://github.com/spring-projects/spring-framework -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +Embedded license: + **************************************** Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -56698,7 +54150,7 @@ any resulting litigation. you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -56706,357 +54158,123 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. - **************************************** - -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. - -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - -org.eclipse.jetty.toolchain:jetty-schemas - ------- -Assorted - -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. - --------------------------------------------------------------------------------- - -423. Group: org.eclipse.jetty Name: jetty-continuation Version: 9.4.53.v20231009 - -Manifest Project URL: https://eclipse.org/jetty - -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php - -Embedded license: - - **************************************** - -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - +======================================================================= +SPRING FRAMEWORK 5.3.39 SUBCOMPONENTS: -Eclipse Public License - v 1.0 +Spring Framework 5.3.39 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. -1. DEFINITIONS +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): -"Contribution" means: +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. -"Contributor" means any person or entity that distributes the Program. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -"Program" means the Contributions distributed in accordance with this -Agreement. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. +Copyright (c) 1999-2009, OW2 Consortium -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. -3. REQUIREMENTS +>>> CGLIB 3.3 (cglib:cglib:3.3): -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. -When the Program is made available in source code form: +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: -4. COMMERCIAL DISTRIBUTION +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +=============================================================================== -5. NO WARRANTY +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. -6. DISCLAIMER OF LIABILITY + **************************************** -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +Spring Framework 5.3.39 +Copyright (c) 2002-2024 Pivotal, Inc. -7. GENERAL +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +-------------------------------------------------------------------------------- -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +434. Group: org.springframework Name: spring-core Version: 5.3.39 -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM Project URL: https://github.com/spring-projects/spring-framework -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +Embedded license: + **************************************** Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -57248,7 +54466,7 @@ any resulting litigation. you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -57256,357 +54474,439 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. - **************************************** +======================================================================= -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== +SPRING FRAMEWORK 5.3.39 SUBCOMPONENTS: -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. +Spring Framework 5.3.39 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. -Jetty is dual licensed under both - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): - and +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: -Jetty may be distributed under either license. +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. ------- -Eclipse +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 1999-2009, OW2 Consortium -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish +>>> CGLIB 3.3 (cglib:cglib:3.3): ------- -Oracle +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): ------- -Oracle OpenJDK +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: - * java.sun.security.ssl +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html +=============================================================================== ------- -OW2 +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. -org.ow2.asm:asm-commons -org.ow2.asm:asm + **************************************** +Spring Framework 5.3.39 +Copyright (c) 2002-2024 Pivotal, Inc. ------- -Apache +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. -The following artifacts are ASL2 licensed. +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl +-------------------------------------------------------------------------------- +435. Group: org.springframework Name: spring-expression Version: 5.3.39 ------- -MortBay +POM Project URL: https://github.com/spring-projects/spring-framework -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util +Embedded license: -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + **************************************** + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ ------- -Mortbay + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -The following artifacts are CDDL + GPLv2 with classpath exception. + 1. Definitions. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -org.eclipse.jetty.toolchain:jetty-schemas + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. ------- -Assorted + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. --------------------------------------------------------------------------------- + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -424. Group: org.eclipse.jetty Name: jetty-http Version: 9.4.53.v20231009 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Manifest Project URL: https://eclipse.org/jetty + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Embedded license: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - **************************************** + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -Eclipse Public License - v 1.0 + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -1. DEFINITIONS + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -"Contribution" means: + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -"Contributor" means any person or entity that distributes the Program. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -"Program" means the Contributions distributed in accordance with this -Agreement. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + END OF TERMS AND CONDITIONS -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 5.3.39 SUBCOMPONENTS: + +Spring Framework 5.3.39 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -3. REQUIREMENTS +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: +Copyright (c) 1999-2009, OW2 Consortium - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. -When the Program is made available in source code form: +>>> CGLIB 3.3 (cglib:cglib:3.3): - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. -4. COMMERCIAL DISTRIBUTION +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: -5. NO WARRANTY +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. -6. DISCLAIMER OF LIABILITY +=============================================================================== -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. -7. GENERAL +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. + **************************************** -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +Spring Framework 5.3.39 +Copyright (c) 2002-2024 Pivotal, Inc. -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +-------------------------------------------------------------------------------- + +436. Group: org.springframework Name: spring-jcl Version: 5.3.39 + +POM Project URL: https://github.com/spring-projects/spring-framework +POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 + +Embedded license: + **************************************** Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -57798,7 +55098,7 @@ any resulting litigation. you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -57806,352 +55106,142 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. - **************************************** - -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - +======================================================================= ------- -Oracle +SPRING FRAMEWORK 5.3.39 SUBCOMPONENTS: -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +Spring Framework 5.3.39 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api ------- -Oracle OpenJDK +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. - * java.sun.security.ssl +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. ------- -OW2 +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. -org.ow2.asm:asm-commons -org.ow2.asm:asm +Copyright (c) 1999-2009, OW2 Consortium ------- -Apache +>>> CGLIB 3.3 (cglib:cglib:3.3): -The following artifacts are ASL2 licensed. +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): ------- -MortBay +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +=============================================================================== ------- -Mortbay +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. -The following artifacts are CDDL + GPLv2 with classpath exception. +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + **************************************** -org.eclipse.jetty.toolchain:jetty-schemas +Spring Framework 5.3.39 +Copyright (c) 2002-2024 Pivotal, Inc. ------- -Assorted +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. -------------------------------------------------------------------------------- -425. Group: org.eclipse.jetty Name: jetty-io Version: 9.4.53.v20231009 +437. Group: org.xerial.snappy Name: snappy-java Version: 1.1.10.7 -Manifest Project URL: https://eclipse.org/jetty +Manifest Project URL: http://www.xerial.org/ -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM Project URL: https://github.com/xerial/snappy-java -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php +POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.html Embedded license: **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +This folder contains the native libraries built for various platforms. +-------------------------------------------------------------------------------- -7. GENERAL +438. Group: org.yaml Name: snakeyaml Version: 2.2 -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +POM Project URL: https://bitbucket.org/snakeyaml/snakeyaml -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +-------------------------------------------------------------------------------- -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +439. Group: software.amazon.awssdk Name: acm Version: 2.21.23 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + **************************************** Apache License @@ -58356,352 +55446,292 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). ------- -Mortbay +-------------------------------------------------------------------------------- -The following artifacts are CDDL + GPLv2 with classpath exception. +440. Group: software.amazon.awssdk Name: acm Version: 2.23.3 -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM Project URL: https://aws.amazon.com/sdkforjava -org.eclipse.jetty.toolchain:jetty-schemas +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 ------- -Assorted +Embedded license: -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + **************************************** --------------------------------------------------------------------------------- -426. Group: org.eclipse.jetty Name: jetty-jaas Version: 9.4.53.v20231009 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Manifest Project URL: https://eclipse.org/jetty + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + 1. Definitions. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Embedded license: + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - **************************************** + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Eclipse Public License - v 1.0 + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -1. DEFINITIONS + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -"Contribution" means: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -"Contributor" means any person or entity that distributes the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -3. REQUIREMENTS + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -When the Program is made available in source code form: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -4. COMMERCIAL DISTRIBUTION + END OF TERMS AND CONDITIONS -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + APPENDIX: How to apply the Apache License to your work. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -5. NO WARRANTY + Copyright [yyyy] [name of copyright owner] -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -6. DISCLAIMER OF LIABILITY + http://www.apache.org/licenses/LICENSE-2.0 -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -7. GENERAL + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +-------------------------------------------------------------------------------- -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +441. Group: software.amazon.awssdk Name: annotations Version: 2.21.23 -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -58906,352 +55936,290 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -The following artifacts are CDDL + GPLv2 with classpath exception. +-------------------------------------------------------------------------------- -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +442. Group: software.amazon.awssdk Name: annotations Version: 2.23.3 -org.eclipse.jetty.toolchain:jetty-schemas +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 ------- -Assorted +Embedded license: -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + **************************************** --------------------------------------------------------------------------------- -427. Group: org.eclipse.jetty Name: jetty-jmx Version: 9.4.53.v20231009 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Manifest Project URL: https://eclipse.org/jetty + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + 1. Definitions. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Embedded license: + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - **************************************** + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Eclipse Public License - v 1.0 + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -1. DEFINITIONS + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -"Contribution" means: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -"Contributor" means any person or entity that distributes the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -3. REQUIREMENTS + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -When the Program is made available in source code form: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -4. COMMERCIAL DISTRIBUTION + END OF TERMS AND CONDITIONS -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + APPENDIX: How to apply the Apache License to your work. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -5. NO WARRANTY + Copyright [yyyy] [name of copyright owner] -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -6. DISCLAIMER OF LIABILITY + http://www.apache.org/licenses/LICENSE-2.0 -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -7. GENERAL + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +-------------------------------------------------------------------------------- -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +443. Group: software.amazon.awssdk Name: annotations Version: 2.25.11 -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -59456,352 +56424,290 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -The following artifacts are CDDL + GPLv2 with classpath exception. +-------------------------------------------------------------------------------- -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +444. Group: software.amazon.awssdk Name: annotations Version: 2.28.20 -org.eclipse.jetty.toolchain:jetty-schemas +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 ------- -Assorted +Embedded license: -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + **************************************** --------------------------------------------------------------------------------- -428. Group: org.eclipse.jetty Name: jetty-jndi Version: 9.4.53.v20231009 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Manifest Project URL: https://eclipse.org/jetty + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + 1. Definitions. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Embedded license: + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - **************************************** + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Eclipse Public License - v 1.0 + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -1. DEFINITIONS + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -"Contribution" means: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -"Contributor" means any person or entity that distributes the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -3. REQUIREMENTS + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -When the Program is made available in source code form: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -4. COMMERCIAL DISTRIBUTION + END OF TERMS AND CONDITIONS -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + APPENDIX: How to apply the Apache License to your work. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -5. NO WARRANTY + Copyright [yyyy] [name of copyright owner] -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -6. DISCLAIMER OF LIABILITY + http://www.apache.org/licenses/LICENSE-2.0 -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -7. GENERAL + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +-------------------------------------------------------------------------------- -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +445. Group: software.amazon.awssdk Name: apache-client Version: 2.21.23 -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -60006,352 +56912,290 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. - -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -org.eclipse.jetty.toolchain:jetty-schemas +-------------------------------------------------------------------------------- ------- -Assorted +446. Group: software.amazon.awssdk Name: apache-client Version: 2.23.3 -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 --------------------------------------------------------------------------------- +Embedded license: -429. Group: org.eclipse.jetty Name: jetty-plus Version: 9.4.53.v20231009 + **************************************** -Manifest Project URL: https://eclipse.org/jetty -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Embedded license: + 1. Definitions. - **************************************** + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -Eclipse Public License - v 1.0 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -1. DEFINITIONS + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -"Contribution" means: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contributor" means any person or entity that distributes the Program. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -"Program" means the Contributions distributed in accordance with this -Agreement. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -3. REQUIREMENTS + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -When the Program is made available in source code form: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -4. COMMERCIAL DISTRIBUTION + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + END OF TERMS AND CONDITIONS -5. NO WARRANTY + APPENDIX: How to apply the Apache License to your work. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -6. DISCLAIMER OF LIABILITY + Copyright [yyyy] [name of copyright owner] -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -7. GENERAL + http://www.apache.org/licenses/LICENSE-2.0 -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +-------------------------------------------------------------------------------- -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +447. Group: software.amazon.awssdk Name: apache-client Version: 2.25.11 + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + **************************************** Apache License @@ -60556,352 +57400,292 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). ------- -Mortbay +-------------------------------------------------------------------------------- -The following artifacts are CDDL + GPLv2 with classpath exception. +448. Group: software.amazon.awssdk Name: apache-client Version: 2.28.20 -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -org.eclipse.jetty.toolchain:jetty-schemas +Embedded license: ------- -Assorted + **************************************** -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -430. Group: org.eclipse.jetty Name: jetty-security Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Eclipse Public License - v 1.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1. DEFINITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contribution" means: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Contributor" means any person or entity that distributes the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -3. REQUIREMENTS + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -When the Program is made available in source code form: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + END OF TERMS AND CONDITIONS -4. COMMERCIAL DISTRIBUTION + APPENDIX: How to apply the Apache License to your work. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Copyright [yyyy] [name of copyright owner] -5. NO WARRANTY + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + http://www.apache.org/licenses/LICENSE-2.0 -6. DISCLAIMER OF LIABILITY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +449. Group: software.amazon.awssdk Name: arns Version: 2.21.23 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -61106,352 +57890,48 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. - -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - -org.eclipse.jetty.toolchain:jetty-schemas - ------- -Assorted - -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. - --------------------------------------------------------------------------------- - -431. Group: org.eclipse.jetty Name: jetty-server Version: 9.4.53.v20231009 - -Manifest Project URL: https://eclipse.org/jetty - -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php - -Embedded license: - - **************************************** - -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +-------------------------------------------------------------------------------- + +450. Group: software.amazon.awssdk Name: arns Version: 2.22.12 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + **************************************** Apache License @@ -61656,352 +58136,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Jetty may be distributed under either license. +-------------------------------------------------------------------------------- ------- -Eclipse +451. Group: software.amazon.awssdk Name: arns Version: 2.23.3 -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +POM Project URL: https://aws.amazon.com/sdkforjava -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 +Embedded license: -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish + **************************************** ------- -Oracle + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api + 1. Definitions. ------- -Oracle OpenJDK + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - * java.sun.security.ssl + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. ------- -OW2 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -org.ow2.asm:asm-commons -org.ow2.asm:asm + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." ------- -Apache + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The following artifacts are ASL2 licensed. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: ------- -MortBay + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. ------- -Mortbay + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -The following artifacts are CDDL + GPLv2 with classpath exception. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -org.eclipse.jetty.toolchain:jetty-schemas + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. ------- -Assorted + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -432. Group: org.eclipse.jetty Name: jetty-servlet Version: 9.4.53.v20231009 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Manifest Project URL: https://eclipse.org/jetty + Copyright [yyyy] [name of copyright owner] -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + http://www.apache.org/licenses/LICENSE-2.0 -Embedded license: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +452. Group: software.amazon.awssdk Name: auth Version: 2.21.23 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -62206,352 +58628,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Jetty may be distributed under either license. +-------------------------------------------------------------------------------- ------- -Eclipse +453. Group: software.amazon.awssdk Name: auth Version: 2.23.3 -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +POM Project URL: https://aws.amazon.com/sdkforjava -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 +Embedded license: -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish + **************************************** ------- -Oracle + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api + 1. Definitions. ------- -Oracle OpenJDK + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - * java.sun.security.ssl + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. ------- -OW2 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -org.ow2.asm:asm-commons -org.ow2.asm:asm + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." ------- -Apache + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The following artifacts are ASL2 licensed. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: ------- -MortBay + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. ------- -Mortbay + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -The following artifacts are CDDL + GPLv2 with classpath exception. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -org.eclipse.jetty.toolchain:jetty-schemas + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. ------- -Assorted + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -433. Group: org.eclipse.jetty Name: jetty-servlets Version: 9.4.53.v20231009 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Manifest Project URL: https://eclipse.org/jetty + Copyright [yyyy] [name of copyright owner] -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + http://www.apache.org/licenses/LICENSE-2.0 -Embedded license: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +454. Group: software.amazon.awssdk Name: auth Version: 2.25.11 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -62756,352 +59120,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Jetty may be distributed under either license. +-------------------------------------------------------------------------------- ------- -Eclipse +455. Group: software.amazon.awssdk Name: auth Version: 2.28.20 -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +POM Project URL: https://aws.amazon.com/sdkforjava -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 +Embedded license: -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish + **************************************** ------- -Oracle + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api + 1. Definitions. ------- -Oracle OpenJDK + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - * java.sun.security.ssl + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. ------- -OW2 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -org.ow2.asm:asm-commons -org.ow2.asm:asm + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." ------- -Apache + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The following artifacts are ASL2 licensed. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: ------- -MortBay + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. ------- -Mortbay + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -The following artifacts are CDDL + GPLv2 with classpath exception. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -org.eclipse.jetty.toolchain:jetty-schemas + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. ------- -Assorted + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -434. Group: org.eclipse.jetty Name: jetty-util Version: 9.4.53.v20231009 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Manifest Project URL: https://eclipse.org/jetty + Copyright [yyyy] [name of copyright owner] -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + http://www.apache.org/licenses/LICENSE-2.0 -Embedded license: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +456. Group: software.amazon.awssdk Name: aws-cbor-protocol Version: 2.25.11 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -63306,352 +59612,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). +-------------------------------------------------------------------------------- ------- -Mortbay +457. Group: software.amazon.awssdk Name: aws-core Version: 2.21.23 -The following artifacts are CDDL + GPLv2 with classpath exception. +POM Project URL: https://aws.amazon.com/sdkforjava -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -org.eclipse.jetty.toolchain:jetty-schemas +Embedded license: ------- -Assorted + **************************************** -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -435. Group: org.eclipse.jetty Name: jetty-util-ajax Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Eclipse Public License - v 1.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1. DEFINITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contribution" means: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Contributor" means any person or entity that distributes the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -3. REQUIREMENTS + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -When the Program is made available in source code form: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + END OF TERMS AND CONDITIONS -4. COMMERCIAL DISTRIBUTION + APPENDIX: How to apply the Apache License to your work. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Copyright [yyyy] [name of copyright owner] -5. NO WARRANTY + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + http://www.apache.org/licenses/LICENSE-2.0 -6. DISCLAIMER OF LIABILITY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +458. Group: software.amazon.awssdk Name: aws-core Version: 2.23.3 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -63856,352 +60104,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). ------- -Mortbay +-------------------------------------------------------------------------------- -The following artifacts are CDDL + GPLv2 with classpath exception. +459. Group: software.amazon.awssdk Name: aws-core Version: 2.25.11 -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM Project URL: https://aws.amazon.com/sdkforjava -org.eclipse.jetty.toolchain:jetty-schemas +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 ------- -Assorted +Embedded license: -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + **************************************** --------------------------------------------------------------------------------- -436. Group: org.eclipse.jetty Name: jetty-webapp Version: 9.4.53.v20231009 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Manifest Project URL: https://eclipse.org/jetty + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + 1. Definitions. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Embedded license: + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - **************************************** + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Eclipse Public License - v 1.0 + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -1. DEFINITIONS + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -"Contribution" means: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -"Contributor" means any person or entity that distributes the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -3. REQUIREMENTS + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -When the Program is made available in source code form: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -4. COMMERCIAL DISTRIBUTION + END OF TERMS AND CONDITIONS -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + APPENDIX: How to apply the Apache License to your work. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -5. NO WARRANTY + Copyright [yyyy] [name of copyright owner] -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -6. DISCLAIMER OF LIABILITY + http://www.apache.org/licenses/LICENSE-2.0 -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -7. GENERAL + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +-------------------------------------------------------------------------------- -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +460. Group: software.amazon.awssdk Name: aws-core Version: 2.28.20 -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM Project URL: https://aws.amazon.com/sdkforjava -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + **************************************** Apache License @@ -64406,352 +60596,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +-------------------------------------------------------------------------------- -org.eclipse.jetty.toolchain:jetty-schemas +461. Group: software.amazon.awssdk Name: aws-json-protocol Version: 2.21.23 ------- -Assorted +POM Project URL: https://aws.amazon.com/sdkforjava -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 --------------------------------------------------------------------------------- +Embedded license: -437. Group: org.eclipse.jetty Name: jetty-xml Version: 9.4.53.v20231009 + **************************************** -Manifest Project URL: https://eclipse.org/jetty -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Embedded license: + 1. Definitions. - **************************************** + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -Eclipse Public License - v 1.0 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -1. DEFINITIONS + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -"Contribution" means: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contributor" means any person or entity that distributes the Program. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -"Program" means the Contributions distributed in accordance with this -Agreement. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -3. REQUIREMENTS + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -When the Program is made available in source code form: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -4. COMMERCIAL DISTRIBUTION + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + END OF TERMS AND CONDITIONS -5. NO WARRANTY + APPENDIX: How to apply the Apache License to your work. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -6. DISCLAIMER OF LIABILITY + Copyright [yyyy] [name of copyright owner] -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -7. GENERAL + http://www.apache.org/licenses/LICENSE-2.0 -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +-------------------------------------------------------------------------------- -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +462. Group: software.amazon.awssdk Name: aws-json-protocol Version: 2.23.3 + +POM Project URL: https://aws.amazon.com/sdkforjava +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + + **************************************** Apache License @@ -64956,352 +61088,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). +-------------------------------------------------------------------------------- ------- -Mortbay +463. Group: software.amazon.awssdk Name: aws-json-protocol Version: 2.25.11 -The following artifacts are CDDL + GPLv2 with classpath exception. +POM Project URL: https://aws.amazon.com/sdkforjava -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -org.eclipse.jetty.toolchain:jetty-schemas +Embedded license: ------- -Assorted + **************************************** -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -438. Group: org.eclipse.jetty.http2 Name: http2-common Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Eclipse Public License - v 1.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1. DEFINITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contribution" means: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Contributor" means any person or entity that distributes the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -3. REQUIREMENTS + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -When the Program is made available in source code form: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + END OF TERMS AND CONDITIONS -4. COMMERCIAL DISTRIBUTION + APPENDIX: How to apply the Apache License to your work. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Copyright [yyyy] [name of copyright owner] -5. NO WARRANTY + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + http://www.apache.org/licenses/LICENSE-2.0 -6. DISCLAIMER OF LIABILITY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +464. Group: software.amazon.awssdk Name: aws-json-protocol Version: 2.28.20 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -65506,352 +61580,48 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. - -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - -org.eclipse.jetty.toolchain:jetty-schemas - ------- -Assorted - -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -439. Group: org.eclipse.jetty.http2 Name: http2-hpack Version: 9.4.53.v20231009 - -Manifest Project URL: https://eclipse.org/jetty - -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php - -Embedded license: - - **************************************** - -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +465. Group: software.amazon.awssdk Name: aws-query-protocol Version: 2.21.23 -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM Project URL: https://aws.amazon.com/sdkforjava -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + **************************************** Apache License @@ -66056,352 +61826,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Jetty may be distributed under either license. +-------------------------------------------------------------------------------- ------- -Eclipse +466. Group: software.amazon.awssdk Name: aws-query-protocol Version: 2.23.3 -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +POM Project URL: https://aws.amazon.com/sdkforjava -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 +Embedded license: -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish + **************************************** ------- -Oracle + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api + 1. Definitions. ------- -Oracle OpenJDK + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - * java.sun.security.ssl + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. ------- -OW2 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -org.ow2.asm:asm-commons -org.ow2.asm:asm + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." ------- -Apache + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The following artifacts are ASL2 licensed. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: ------- -MortBay + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. ------- -Mortbay + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -The following artifacts are CDDL + GPLv2 with classpath exception. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -org.eclipse.jetty.toolchain:jetty-schemas + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. ------- -Assorted + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -440. Group: org.eclipse.jetty.http2 Name: http2-server Version: 9.4.53.v20231009 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Manifest Project URL: https://eclipse.org/jetty + Copyright [yyyy] [name of copyright owner] -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + http://www.apache.org/licenses/LICENSE-2.0 -Embedded license: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +-------------------------------------------------------------------------------- -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +467. Group: software.amazon.awssdk Name: aws-query-protocol Version: 2.25.11 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + **************************************** Apache License @@ -66606,352 +62318,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Jetty may be distributed under either license. +-------------------------------------------------------------------------------- ------- -Eclipse +468. Group: software.amazon.awssdk Name: aws-xml-protocol Version: 2.21.23 -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +POM Project URL: https://aws.amazon.com/sdkforjava -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 +Embedded license: -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish + **************************************** ------- -Oracle + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api + 1. Definitions. ------- -Oracle OpenJDK + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - * java.sun.security.ssl + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. ------- -OW2 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -org.ow2.asm:asm-commons -org.ow2.asm:asm + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." ------- -Apache + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The following artifacts are ASL2 licensed. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: ------- -MortBay + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. ------- -Mortbay + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -The following artifacts are CDDL + GPLv2 with classpath exception. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -org.eclipse.jetty.toolchain:jetty-schemas + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. ------- -Assorted + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -441. Group: org.eclipse.jetty.websocket Name: javax-websocket-client-impl Version: 9.4.53.v20231009 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Manifest Project URL: https://eclipse.org/jetty + Copyright [yyyy] [name of copyright owner] -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + http://www.apache.org/licenses/LICENSE-2.0 -Embedded license: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +469. Group: software.amazon.awssdk Name: aws-xml-protocol Version: 2.23.3 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -67156,352 +62810,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Jetty may be distributed under either license. +-------------------------------------------------------------------------------- ------- -Eclipse +470. Group: software.amazon.awssdk Name: checksums Version: 2.21.23 -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +POM Project URL: https://aws.amazon.com/sdkforjava -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 +Embedded license: -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish + **************************************** ------- -Oracle + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api + 1. Definitions. ------- -Oracle OpenJDK + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - * java.sun.security.ssl + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. ------- -OW2 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -org.ow2.asm:asm-commons -org.ow2.asm:asm + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." ------- -Apache + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -The following artifacts are ASL2 licensed. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: ------- -MortBay + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. ------- -Mortbay + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -The following artifacts are CDDL + GPLv2 with classpath exception. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -org.eclipse.jetty.toolchain:jetty-schemas + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. ------- -Assorted + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- + APPENDIX: How to apply the Apache License to your work. -442. Group: org.eclipse.jetty.websocket Name: javax-websocket-server-impl Version: 9.4.53.v20231009 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -Manifest Project URL: https://eclipse.org/jetty + Copyright [yyyy] [name of copyright owner] -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + http://www.apache.org/licenses/LICENSE-2.0 -Embedded license: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. - - - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +471. Group: software.amazon.awssdk Name: checksums Version: 2.23.3 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -67706,352 +63302,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). +-------------------------------------------------------------------------------- ------- -Mortbay +472. Group: software.amazon.awssdk Name: checksums Version: 2.25.11 -The following artifacts are CDDL + GPLv2 with classpath exception. +POM Project URL: https://aws.amazon.com/sdkforjava -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -org.eclipse.jetty.toolchain:jetty-schemas +Embedded license: ------- -Assorted + **************************************** -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -443. Group: org.eclipse.jetty.websocket Name: websocket-api Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Eclipse Public License - v 1.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1. DEFINITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contribution" means: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Contributor" means any person or entity that distributes the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -3. REQUIREMENTS + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -When the Program is made available in source code form: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + END OF TERMS AND CONDITIONS -4. COMMERCIAL DISTRIBUTION + APPENDIX: How to apply the Apache License to your work. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Copyright [yyyy] [name of copyright owner] -5. NO WARRANTY + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + http://www.apache.org/licenses/LICENSE-2.0 -6. DISCLAIMER OF LIABILITY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +473. Group: software.amazon.awssdk Name: checksums Version: 2.28.20 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -68256,352 +63794,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). +-------------------------------------------------------------------------------- ------- -Mortbay +474. Group: software.amazon.awssdk Name: checksums-spi Version: 2.21.23 -The following artifacts are CDDL + GPLv2 with classpath exception. +POM Project URL: https://aws.amazon.com/sdkforjava -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -org.eclipse.jetty.toolchain:jetty-schemas +Embedded license: ------- -Assorted + **************************************** -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -444. Group: org.eclipse.jetty.websocket Name: websocket-client Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Eclipse Public License - v 1.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1. DEFINITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contribution" means: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Contributor" means any person or entity that distributes the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -3. REQUIREMENTS + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -When the Program is made available in source code form: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + END OF TERMS AND CONDITIONS -4. COMMERCIAL DISTRIBUTION + APPENDIX: How to apply the Apache License to your work. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Copyright [yyyy] [name of copyright owner] -5. NO WARRANTY + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + http://www.apache.org/licenses/LICENSE-2.0 -6. DISCLAIMER OF LIABILITY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +475. Group: software.amazon.awssdk Name: checksums-spi Version: 2.23.3 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -68806,352 +64286,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api - - ------- -Mortbay - -The following artifacts are CDDL + GPLv2 with classpath exception. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +-------------------------------------------------------------------------------- -org.eclipse.jetty.toolchain:jetty-schemas +476. Group: software.amazon.awssdk Name: checksums-spi Version: 2.25.11 ------- -Assorted +POM Project URL: https://aws.amazon.com/sdkforjava -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 --------------------------------------------------------------------------------- +Embedded license: -445. Group: org.eclipse.jetty.websocket Name: websocket-common Version: 9.4.53.v20231009 + **************************************** -Manifest Project URL: https://eclipse.org/jetty -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Embedded license: + 1. Definitions. - **************************************** + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -Eclipse Public License - v 1.0 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -1. DEFINITIONS + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -"Contribution" means: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contributor" means any person or entity that distributes the Program. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -"Program" means the Contributions distributed in accordance with this -Agreement. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -3. REQUIREMENTS + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -When the Program is made available in source code form: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -4. COMMERCIAL DISTRIBUTION + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + END OF TERMS AND CONDITIONS -5. NO WARRANTY + APPENDIX: How to apply the Apache License to your work. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -6. DISCLAIMER OF LIABILITY + Copyright [yyyy] [name of copyright owner] -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -7. GENERAL + http://www.apache.org/licenses/LICENSE-2.0 -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +-------------------------------------------------------------------------------- -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +477. Group: software.amazon.awssdk Name: checksums-spi Version: 2.28.20 + +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 + +Embedded license: + **************************************** Apache License @@ -69356,352 +64778,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). +-------------------------------------------------------------------------------- ------- -Mortbay +478. Group: software.amazon.awssdk Name: cloudwatch Version: 2.21.23 -The following artifacts are CDDL + GPLv2 with classpath exception. +POM Project URL: https://aws.amazon.com/sdkforjava -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -org.eclipse.jetty.toolchain:jetty-schemas +Embedded license: ------- -Assorted + **************************************** -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -446. Group: org.eclipse.jetty.websocket Name: websocket-server Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Eclipse Public License - v 1.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1. DEFINITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contribution" means: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Contributor" means any person or entity that distributes the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -3. REQUIREMENTS + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -When the Program is made available in source code form: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + END OF TERMS AND CONDITIONS -4. COMMERCIAL DISTRIBUTION + APPENDIX: How to apply the Apache License to your work. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Copyright [yyyy] [name of copyright owner] -5. NO WARRANTY + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + http://www.apache.org/licenses/LICENSE-2.0 -6. DISCLAIMER OF LIABILITY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +479. Group: software.amazon.awssdk Name: cloudwatch Version: 2.25.11 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -69906,352 +65270,294 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. - ------- -Eclipse - -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core - -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message - - -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish - - ------- -Oracle - -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api - ------- -Oracle OpenJDK - -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. - - * java.sun.security.ssl - -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html - - ------- -OW2 - -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html - -org.ow2.asm:asm-commons -org.ow2.asm:asm - - ------- -Apache - -The following artifacts are ASL2 licensed. - -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl - - ------- -MortBay - -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. - -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util - -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). +-------------------------------------------------------------------------------- ------- -Mortbay +480. Group: software.amazon.awssdk Name: crt-core Version: 2.21.23 -The following artifacts are CDDL + GPLv2 with classpath exception. +POM Project URL: https://aws.amazon.com/sdkforjava -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -org.eclipse.jetty.toolchain:jetty-schemas +Embedded license: ------- -Assorted + **************************************** -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. --------------------------------------------------------------------------------- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -447. Group: org.eclipse.jetty.websocket Name: websocket-servlet Version: 9.4.53.v20231009 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Manifest Project URL: https://eclipse.org/jetty + 1. Definitions. -POM License: Apache Software License - Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License - Version 1.0 - https://www.eclipse.org/org/documents/epl-v10.php + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Embedded license: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - **************************************** + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0, or the Apache Software License -2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Eclipse Public License - v 1.0 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1. DEFINITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -"Contribution" means: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -"Contributor" means any person or entity that distributes the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Program" means the Contributions distributed in accordance with this -Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -3. REQUIREMENTS + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -When the Program is made available in source code form: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. + END OF TERMS AND CONDITIONS -4. COMMERCIAL DISTRIBUTION + APPENDIX: How to apply the Apache License to your work. -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. + Copyright [yyyy] [name of copyright owner] -5. NO WARRANTY + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. + http://www.apache.org/licenses/LICENSE-2.0 -6. DISCLAIMER OF LIABILITY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -7. GENERAL +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. +-------------------------------------------------------------------------------- -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. +481. Group: software.amazon.awssdk Name: crt-core Version: 2.23.3 -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. +POM Project URL: https://aws.amazon.com/sdkforjava -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. +Embedded license: + **************************************** Apache License @@ -70456,848 +65762,1026 @@ any resulting litigation. See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -============================================================== - Jetty Web Container - Copyright 1995-2018 Mort Bay Consulting Pty Ltd. -============================================================== - -The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd -unless otherwise noted. - -Jetty is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0.html - - and - - * The Eclipse Public 1.0 License - http://www.eclipse.org/legal/epl-v10.html - -Jetty may be distributed under either license. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). ------- -Eclipse +-------------------------------------------------------------------------------- -The following artifacts are EPL. - * org.eclipse.jetty.orbit:org.eclipse.jdt.core +482. Group: software.amazon.awssdk Name: dynamodb Version: 2.21.23 -The following artifacts are EPL and ASL2. - * org.eclipse.jetty.orbit:javax.security.auth.message +POM Project URL: https://aws.amazon.com/sdkforjava +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -The following artifacts are EPL and CDDL 1.0. - * org.eclipse.jetty.orbit:javax.mail.glassfish +Embedded license: + **************************************** ------- -Oracle -The following artifacts are CDDL + GPLv2 with classpath exception. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - * javax.servlet:javax.servlet-api - * javax.annotation:javax.annotation-api - * javax.transaction:javax.transaction-api - * javax.websocket:javax.websocket-api + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ------- -Oracle OpenJDK + 1. Definitions. -If ALPN is used to negotiate HTTP/2 connections, then the following -artifacts may be included in the distribution or downloaded when ALPN -module is selected. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - * java.sun.security.ssl + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -These artifacts replace/modify OpenJDK classes. The modififications -are hosted at github and both modified and original are under GPL v2 with -classpath exceptions. -http://openjdk.java.net/legal/gplv2+ce.html + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. ------- -OW2 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -The following artifacts are licensed by the OW2 Foundation according to the -terms of http://asm.ow2.org/license.html + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -org.ow2.asm:asm-commons -org.ow2.asm:asm + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. ------- -Apache + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -The following artifacts are ASL2 licensed. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -org.apache.taglibs:taglibs-standard-spec -org.apache.taglibs:taglibs-standard-impl + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. ------- -MortBay + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -The following artifacts are ASL2 licensed. Based on selected classes from -following Apache Tomcat jars, all ASL2 licensed. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -org.mortbay.jasper:apache-jsp - org.apache.tomcat:tomcat-jasper - org.apache.tomcat:tomcat-juli - org.apache.tomcat:tomcat-jsp-api - org.apache.tomcat:tomcat-el-api - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-api - org.apache.tomcat:tomcat-util-scan - org.apache.tomcat:tomcat-util + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -org.mortbay.jasper:apache-el - org.apache.tomcat:tomcat-jasper-el - org.apache.tomcat:tomcat-el-api + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. ------- -Mortbay + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -The following artifacts are CDDL + GPLv2 with classpath exception. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -org.eclipse.jetty.toolchain:jetty-schemas + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. ------- -Assorted + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -The UnixCrypt.java code implements the one way cryptography used by -Unix systems for simple password protection. Copyright 1996 Aki Yoshida, -modified April 2001 by Iris Van den Broeke, Daniel Deville. -Permission to use, copy, modify and distribute UnixCrypt -for non-commercial or commercial purposes and without fee is -granted provided that the copyright notice appears in all copies. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. --------------------------------------------------------------------------------- + END OF TERMS AND CONDITIONS -448. Group: org.eclipse.parsson Name: parsson Version: 1.1.4 + APPENDIX: How to apply the Apache License to your work. -Manifest Project URL: https://www.eclipse.org + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -POM License: Eclipse Public License 2.0 - https://projects.eclipse.org/license/epl-2.0 + Copyright [yyyy] [name of copyright owner] -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://projects.eclipse.org/license/secondary-gpl-2.0-cp + http://www.apache.org/licenses/LICENSE-2.0 -Embedded license: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. +-------------------------------------------------------------------------------- - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. +483. Group: software.amazon.awssdk Name: dynamodb Version: 2.25.11 - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. +POM Project URL: https://aws.amazon.com/sdkforjava - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. +Embedded license: - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. + **************************************** - 2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + 1. Definitions. - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - 3. REQUIREMENTS + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - 3.1 If a Contributor Distributes the Program in any form, then: + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - 3.2 When the Program is Distributed as Source Code: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - b) a copy of this Agreement must be included with each copy of - the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - 4. COMMERCIAL DISTRIBUTION + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - 5. NO WARRANTY + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - 6. DISCLAIMER OF LIABILITY + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - 7. GENERAL + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. + END OF TERMS AND CONDITIONS - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + APPENDIX: How to apply the Apache License to your work. - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - Exhibit A - Form of Secondary Licenses Notice + Copyright [yyyy] [name of copyright owner] - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. + http://www.apache.org/licenses/LICENSE-2.0 - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - You may add additional accurate notices of copyright ownership. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** ---- +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -## The GNU General Public License (GPL) Version 2, June 1991 +-------------------------------------------------------------------------------- - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA +484. Group: software.amazon.awssdk Name: dynamodb-enhanced Version: 2.21.23 - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +POM Project URL: https://aws.amazon.com/sdkforjava - Preamble +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. +Embedded license: - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. + **************************************** - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + 1. Definitions. - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - The precise terms and conditions for copying, distribution and - modification follow. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + END OF TERMS AND CONDITIONS - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + APPENDIX: How to apply the Apache License to your work. - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + Copyright [yyyy] [name of copyright owner] - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + http://www.apache.org/licenses/LICENSE-2.0 - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - NO WARRANTY +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. +-------------------------------------------------------------------------------- - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +485. Group: software.amazon.awssdk Name: dynamodb-enhanced Version: 2.23.3 - END OF TERMS AND CONDITIONS +POM Project URL: https://aws.amazon.com/sdkforjava - How to Apply These Terms to Your New Programs +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. +Embedded license: - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + **************************************** - One line to give the program's name and a brief idea of what it does. - Copyright (C) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + 1. Definitions. - Also add information on how to contact you by electronic and paper mail. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. ---- + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -## CLASSPATH EXCEPTION + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - **************************************** + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -[//]: # " Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved. " -[//]: # " " -[//]: # " This program and the accompanying materials are made available under the " -[//]: # " terms of the Eclipse Public License v. 2.0, which is available at " -[//]: # " http://www.eclipse.org/legal/epl-2.0. " -[//]: # " " -[//]: # " This Source Code may also be made available under the following Secondary " -[//]: # " Licenses when the conditions for such availability set forth in the " -[//]: # " Eclipse Public License v. 2.0 are satisfied: GNU General Public License, " -[//]: # " version 2 with the GNU Classpath Exception, which is available at " -[//]: # " https://www.gnu.org/software/classpath/license.html. " -[//]: # " " -[//]: # " SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 " + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -# Notices for Eclipse Parsson + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -This content is produced and maintained by the Eclipse Parsson project. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -* Project home: https://projects.eclipse.org/projects/ee4j.parsson + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -## Trademarks + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - Eclipse Parsson is a trademark of the Eclipse Foundation. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -## Copyright + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -## Declared Project Licenses + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -https://www.eclipse.org/legal/epl-2.0. + END OF TERMS AND CONDITIONS -SPDX-License-Identifier: EPL-2.0 + APPENDIX: How to apply the Apache License to your work. -## Source Code + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -The project maintains the following source code repositories: + Copyright [yyyy] [name of copyright owner] -* https://github.com/eclipse-ee4j/parsson + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -## Third-party Content + http://www.apache.org/licenses/LICENSE-2.0 -This project leverages the following third party content. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -None + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -## Cryptography +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. -------------------------------------------------------------------------------- -449. Group: org.elasticsearch.client Name: elasticsearch-rest-client Version: 7.17.0 - -POM Project URL: https://github.com/elastic/elasticsearch +486. Group: software.amazon.awssdk Name: endpoints-spi Version: 2.21.23 -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -71492,7 +66976,7 @@ Embedded license: same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Elastic and contributors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -71506,9480 +66990,6918 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Elasticsearch -Copyright 2009-2021 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -450. Group: org.glassfish Name: jakarta.json Version: 2.0.0 - -Manifest Project URL: https://www.eclipse.org - -POM Project URL: https://github.com/eclipse-ee4j/jsonp - -POM License: Eclipse Public License 2.0 - https://projects.eclipse.org/license/epl-2.0 - -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt +487. Group: software.amazon.awssdk Name: endpoints-spi Version: 2.23.3 -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://projects.eclipse.org/license/secondary-gpl-2.0-cp +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** -# Eclipse Public License - v 2.0 - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - 1. DEFINITIONS + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - "Contribution" means: + 1. Definitions. - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - "Contributor" means any person or entity that Distributes the Program. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - "Program" means the Contributions Distributed in accordance with this - Agreement. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - 2. GRANT OF RIGHTS + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - 3. REQUIREMENTS + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - 3.1 If a Contributor Distributes the Program in any form, then: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + END OF TERMS AND CONDITIONS - 3.2 When the Program is Distributed as Source Code: + APPENDIX: How to apply the Apache License to your work. - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - b) a copy of this Agreement must be included with each copy of - the Program. + Copyright [yyyy] [name of copyright owner] - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - 4. COMMERCIAL DISTRIBUTION + http://www.apache.org/licenses/LICENSE-2.0 - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - 5. NO WARRANTY +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. +-------------------------------------------------------------------------------- - 6. DISCLAIMER OF LIABILITY +488. Group: software.amazon.awssdk Name: endpoints-spi Version: 2.25.11 - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - 7. GENERAL +Embedded license: - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. + **************************************** - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + 1. Definitions. - Exhibit A - Form of Secondary Licenses Notice + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - You may add additional accurate notices of copyright ownership. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. ---- + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -## The GNU General Public License (GPL) Version 2, June 1991 + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - Preamble + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - The precise terms and conditions for copying, distribution and - modification follow. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + END OF TERMS AND CONDITIONS - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + APPENDIX: How to apply the Apache License to your work. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + Copyright [yyyy] [name of copyright owner] - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + http://www.apache.org/licenses/LICENSE-2.0 - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, +-------------------------------------------------------------------------------- - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) +489. Group: software.amazon.awssdk Name: endpoints-spi Version: 2.28.20 - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. +Embedded license: - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + **************************************** - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + 1. Definitions. - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - NO WARRANTY + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - END OF TERMS AND CONDITIONS + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - How to Apply These Terms to Your New Programs + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - One line to give the program's name and a brief idea of what it does. - Copyright (C) + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - Also add information on how to contact you by electronic and paper mail. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + END OF TERMS AND CONDITIONS - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + APPENDIX: How to apply the Apache License to your work. - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. ---- + Copyright [yyyy] [name of copyright owner] -## CLASSPATH EXCEPTION + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + http://www.apache.org/licenses/LICENSE-2.0 - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -[//]: # " Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved. " -[//]: # " " -[//]: # " This program and the accompanying materials are made available under the " -[//]: # " terms of the Eclipse Public License v. 2.0, which is available at " -[//]: # " http://www.eclipse.org/legal/epl-2.0. " -[//]: # " " -[//]: # " This Source Code may also be made available under the following Secondary " -[//]: # " Licenses when the conditions for such availability set forth in the " -[//]: # " Eclipse Public License v. 2.0 are satisfied: GNU General Public License, " -[//]: # " version 2 with the GNU Classpath Exception, which is available at " -[//]: # " https://www.gnu.org/software/classpath/license.html. " -[//]: # " " -[//]: # " SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 " - -# Notices for Jakarta JSON Processing +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -This content is produced and maintained by the Jakarta JSON Processing project. +-------------------------------------------------------------------------------- -* Project home: https://projects.eclipse.org/projects/ee4j.jsonp +490. Group: software.amazon.awssdk Name: glue Version: 2.22.12 -## Trademarks +POM Project URL: https://aws.amazon.com/sdkforjava - Jakarta JSON Processing is a trademark of the Eclipse Foundation. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -## Copyright +Embedded license: -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + **************************************** -## Declared Project Licenses -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License v2.0 w/Classpath exception which is available at -https://www.gnu.org/software/classpath/license.html. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -## Source Code + 1. Definitions. -The project maintains the following source code repositories: + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -* https://github.com/eclipse-ee4j/jsonp + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -## Third-party Content + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -This project leverages the following third party content. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -javax.ws.rs-api:2.0.1 (2.0.1) + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -* License: (CDDL-1.1 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND - Apache-2.0 -* Project: https://github.com/jax-rs/api -* Source: https://github.com/jax-rs/api + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -javax.ws.rs:jsr311-api:jar:1.1.1 (1.1.1) + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -* License: CDDL-1.0 AND Apache-2.0 -* Project: https://github.com/jax-rs/api -* Source: - http://search.maven.org/remotecontent?filepath=javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1-sources.jar + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -javax:javaee-web-api:jar:7.0 (7.0) + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -* License: (CDDL-1.0 OR GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) AND - (EPL-1.0 OR BSD-3-Clause) AND Apache-2.0 AND LicenseRef-Public Domain -* Project: https://javaee.github.io -* Source: - http://search.maven.org/remotecontent?filepath=javax/javaee-web-api/7.0/javaee-web-api-7.0-sources.jar + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -JUnit (4.12) + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -* License: Eclipse Public License + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -## Cryptography + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. --------------------------------------------------------------------------------- + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -451. Group: org.glassfish.hk2 Name: hk2-api Version: 2.6.1 + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -Manifest Project URL: http://www.oracle.com + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -Embedded license: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - **************************************** + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. - - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. - - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. - - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. - - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - - 3. REQUIREMENTS - - 3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - - 3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. - - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. - - Exhibit A - Form of Secondary Licenses Notice - - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. - ---- - -## The GNU General Public License (GPL) Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. - - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. - - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. - - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - - Also add information on how to contact you by electronic and paper mail. - - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. - ---- - -## CLASSPATH EXCEPTION - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - **************************************** + END OF TERMS AND CONDITIONS -# Notices for Eclipse GlassFish + APPENDIX: How to apply the Apache License to your work. -This content is produced and maintained by the Eclipse GlassFish project. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -* Project home: https://projects.eclipse.org/projects/ee4j.glassfish + Copyright [yyyy] [name of copyright owner] -## Trademarks + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -Eclipse GlassFish, and GlassFish are trademarks of the Eclipse Foundation. + http://www.apache.org/licenses/LICENSE-2.0 -## Copyright + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -## Declared Project Licenses +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. +-------------------------------------------------------------------------------- -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +491. Group: software.amazon.awssdk Name: glue Version: 2.23.3 -## Source Code +POM Project URL: https://aws.amazon.com/sdkforjava -The project maintains the following source code repositories: +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -* https://github.com/eclipse-ee4j/glassfish-ha-api -* https://github.com/eclipse-ee4j/glassfish-logging-annotation-processor -* https://github.com/eclipse-ee4j/glassfish-shoal -* https://github.com/eclipse-ee4j/glassfish-cdi-porting-tck -* https://github.com/eclipse-ee4j/glassfish-jsftemplating -* https://github.com/eclipse-ee4j/glassfish-hk2-extra -* https://github.com/eclipse-ee4j/glassfish-hk2 -* https://github.com/eclipse-ee4j/glassfish-fighterfish +Embedded license: -## Third-party Content + **************************************** -This project leverages the following third party content. -None + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -## Cryptography + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. + 1. Definitions. --------------------------------------------------------------------------------- + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -452. Group: org.glassfish.hk2 Name: hk2-locator Version: 2.6.1 + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Manifest Project URL: http://www.oracle.com + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Embedded license: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - **************************************** + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. - - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. - - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. - - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. - - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - - 3. REQUIREMENTS - - 3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - - 3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. - - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. - - Exhibit A - Form of Secondary Licenses Notice - - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. - ---- - -## The GNU General Public License (GPL) Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. - - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. - - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. - - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - - Also add information on how to contact you by electronic and paper mail. - - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. - ---- - -## CLASSPATH EXCEPTION - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - **************************************** + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -# Notices for Eclipse GlassFish + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -This content is produced and maintained by the Eclipse GlassFish project. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -* Project home: https://projects.eclipse.org/projects/ee4j.glassfish + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -## Trademarks + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -Eclipse GlassFish, and GlassFish are trademarks of the Eclipse Foundation. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -## Copyright + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -## Declared Project Licenses + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -## Source Code + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -The project maintains the following source code repositories: + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -* https://github.com/eclipse-ee4j/glassfish-ha-api -* https://github.com/eclipse-ee4j/glassfish-logging-annotation-processor -* https://github.com/eclipse-ee4j/glassfish-shoal -* https://github.com/eclipse-ee4j/glassfish-cdi-porting-tck -* https://github.com/eclipse-ee4j/glassfish-jsftemplating -* https://github.com/eclipse-ee4j/glassfish-hk2-extra -* https://github.com/eclipse-ee4j/glassfish-hk2 -* https://github.com/eclipse-ee4j/glassfish-fighterfish + END OF TERMS AND CONDITIONS -## Third-party Content + APPENDIX: How to apply the Apache License to your work. -This project leverages the following third party content. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -None + Copyright [yyyy] [name of copyright owner] -## Cryptography + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. + http://www.apache.org/licenses/LICENSE-2.0 --------------------------------------------------------------------------------- + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -453. Group: org.glassfish.hk2 Name: hk2-utils Version: 2.6.1 + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -Manifest Project URL: http://www.oracle.com +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 +-------------------------------------------------------------------------------- -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt +492. Group: software.amazon.awssdk Name: http-auth Version: 2.21.23 -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. - - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. - - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. - - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. - - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - - 3. REQUIREMENTS - - 3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - - 3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. - - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. - - Exhibit A - Form of Secondary Licenses Notice - - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. - ---- - -## The GNU General Public License (GPL) Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. - - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. - - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. - - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - - Also add information on how to contact you by electronic and paper mail. - - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. - ---- - -## CLASSPATH EXCEPTION - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. - - **************************************** - -# Notices for Eclipse GlassFish -This content is produced and maintained by the Eclipse GlassFish project. - -* Project home: https://projects.eclipse.org/projects/ee4j.glassfish + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -## Trademarks + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Eclipse GlassFish, and GlassFish are trademarks of the Eclipse Foundation. + 1. Definitions. -## Copyright + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -## Declared Project Licenses + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -## Source Code + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -The project maintains the following source code repositories: + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -* https://github.com/eclipse-ee4j/glassfish-ha-api -* https://github.com/eclipse-ee4j/glassfish-logging-annotation-processor -* https://github.com/eclipse-ee4j/glassfish-shoal -* https://github.com/eclipse-ee4j/glassfish-cdi-porting-tck -* https://github.com/eclipse-ee4j/glassfish-jsftemplating -* https://github.com/eclipse-ee4j/glassfish-hk2-extra -* https://github.com/eclipse-ee4j/glassfish-hk2 -* https://github.com/eclipse-ee4j/glassfish-fighterfish + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -## Third-party Content + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -This project leverages the following third party content. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -None + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -## Cryptography + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: --------------------------------------------------------------------------------- + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -454. Group: org.glassfish.hk2 Name: osgi-resource-locator Version: 1.0.3 + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -Manifest Project URL: https://www.eclipse.org + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. --------------------------------------------------------------------------------- + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -455. Group: org.glassfish.hk2.external Name: aopalliance-repackaged Version: 2.6.1 + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Manifest Project URL: http://www.oracle.com + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + END OF TERMS AND CONDITIONS -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + APPENDIX: How to apply the Apache License to your work. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + Copyright [yyyy] [name of copyright owner] -Embedded license: + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. - - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. - - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. - - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. - - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - - 3. REQUIREMENTS - - 3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - - 3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. - - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. - - Exhibit A - Form of Secondary Licenses Notice - - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. - ---- - -## The GNU General Public License (GPL) Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. - - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. - - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. - - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - - Also add information on how to contact you by electronic and paper mail. - - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. - ---- - -## CLASSPATH EXCEPTION - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -# Notices for Eclipse GlassFish +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -This content is produced and maintained by the Eclipse GlassFish project. +-------------------------------------------------------------------------------- -* Project home: https://projects.eclipse.org/projects/ee4j.glassfish +493. Group: software.amazon.awssdk Name: http-auth Version: 2.23.3 -## Trademarks +POM Project URL: https://aws.amazon.com/sdkforjava -Eclipse GlassFish, and GlassFish are trademarks of the Eclipse Foundation. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -## Copyright +Embedded license: -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + **************************************** -## Declared Project Licenses -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -## Source Code + 1. Definitions. -The project maintains the following source code repositories: + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -* https://github.com/eclipse-ee4j/glassfish-ha-api -* https://github.com/eclipse-ee4j/glassfish-logging-annotation-processor -* https://github.com/eclipse-ee4j/glassfish-shoal -* https://github.com/eclipse-ee4j/glassfish-cdi-porting-tck -* https://github.com/eclipse-ee4j/glassfish-jsftemplating -* https://github.com/eclipse-ee4j/glassfish-hk2-extra -* https://github.com/eclipse-ee4j/glassfish-hk2 -* https://github.com/eclipse-ee4j/glassfish-fighterfish + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -## Third-party Content + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -This project leverages the following third party content. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -None + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -## Cryptography + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). --------------------------------------------------------------------------------- + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -456. Group: org.glassfish.hk2.external Name: jakarta.inject Version: 2.6.1 + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Manifest Project URL: http://www.oracle.com + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -Embedded license: + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - **************************************** + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. - - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. - - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. - - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. - - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - - 3. REQUIREMENTS - - 3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - - 3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. - - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. - - Exhibit A - Form of Secondary Licenses Notice - - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. - ---- - -## The GNU General Public License (GPL) Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. - - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. - - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. - - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - - Also add information on how to contact you by electronic and paper mail. - - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. - ---- - -## CLASSPATH EXCEPTION - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - **************************************** + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -# Notices for Eclipse GlassFish + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -This content is produced and maintained by the Eclipse GlassFish project. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -* Project home: https://projects.eclipse.org/projects/ee4j.glassfish + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -## Trademarks + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Eclipse GlassFish, and GlassFish are trademarks of the Eclipse Foundation. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -## Copyright + END OF TERMS AND CONDITIONS -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + APPENDIX: How to apply the Apache License to your work. -## Declared Project Licenses + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. + Copyright [yyyy] [name of copyright owner] -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -## Source Code + http://www.apache.org/licenses/LICENSE-2.0 -The project maintains the following source code repositories: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -* https://github.com/eclipse-ee4j/glassfish-ha-api -* https://github.com/eclipse-ee4j/glassfish-logging-annotation-processor -* https://github.com/eclipse-ee4j/glassfish-shoal -* https://github.com/eclipse-ee4j/glassfish-cdi-porting-tck -* https://github.com/eclipse-ee4j/glassfish-jsftemplating -* https://github.com/eclipse-ee4j/glassfish-hk2-extra -* https://github.com/eclipse-ee4j/glassfish-hk2 -* https://github.com/eclipse-ee4j/glassfish-fighterfish + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -## Third-party Content +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -This project leverages the following third party content. +-------------------------------------------------------------------------------- -None +494. Group: software.amazon.awssdk Name: http-auth Version: 2.25.11 -## Cryptography +POM Project URL: https://aws.amazon.com/sdkforjava -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 --------------------------------------------------------------------------------- +Embedded license: -457. Group: org.glassfish.jersey.containers Name: jersey-container-servlet Version: 2.39.1 + **************************************** -Manifest Project URL: https://www.eclipse.org/org/foundation/ -POM License: Apache License, 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -POM License: BSD 2-Clause - https://opensource.org/licenses/BSD-2-Clause + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM License: EDL 1.0 - http://www.eclipse.org/org/documents/edl-v10.php + 1. Definitions. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -POM License: MIT license - http://www.opensource.org/licenses/mit-license.php + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -POM License: Modified BSD - https://asm.ow2.io/license.html + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -POM License: Public Domain - https://creativecommons.org/publicdomain/zero/1.0/ + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -POM License: W3C license - https://www.w3.org/Consortium/Legal/copyright-documents-19990405 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -POM License: jQuery licenseLicense: jquery.org/license + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Embedded license: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - **************************************** + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -# Eclipse Public License - v 2.0 + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - 1. DEFINITIONS + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - "Contribution" means: + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - "Contributor" means any person or entity that Distributes the Program. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - "Program" means the Contributions Distributed in accordance with this - Agreement. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. + END OF TERMS AND CONDITIONS - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. + APPENDIX: How to apply the Apache License to your work. - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 2. GRANT OF RIGHTS + Copyright [yyyy] [name of copyright owner] - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + http://www.apache.org/licenses/LICENSE-2.0 - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - 3. REQUIREMENTS +-------------------------------------------------------------------------------- - 3.1 If a Contributor Distributes the Program in any form, then: +495. Group: software.amazon.awssdk Name: http-auth Version: 2.28.20 - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and +POM Project URL: https://aws.amazon.com/sdkforjava - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; +Embedded license: - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + **************************************** - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - 3.2 When the Program is Distributed as Source Code: + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - b) a copy of this Agreement must be included with each copy of - the Program. + 1. Definitions. - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - 4. COMMERCIAL DISTRIBUTION + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - 5. NO WARRANTY + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - 6. DISCLAIMER OF LIABILITY + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - 7. GENERAL + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - Exhibit A - Form of Secondary Licenses Notice + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - You may add additional accurate notices of copyright ownership. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. ---- + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -## The GNU General Public License (GPL) Version 2, June 1991 + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - Preamble + END OF TERMS AND CONDITIONS - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. + APPENDIX: How to apply the Apache License to your work. - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. + Copyright [yyyy] [name of copyright owner] - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + http://www.apache.org/licenses/LICENSE-2.0 - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - The precise terms and conditions for copying, distribution and - modification follow. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +-------------------------------------------------------------------------------- - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". +496. Group: software.amazon.awssdk Name: http-auth-aws Version: 2.21.23 - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. +Embedded license: - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + **************************************** - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + 1. Definitions. - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - NO WARRANTY + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS - How to Apply These Terms to Your New Programs + APPENDIX: How to apply the Apache License to your work. - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + Copyright [yyyy] [name of copyright owner] - One line to give the program's name and a brief idea of what it does. - Copyright (C) + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + http://www.apache.org/licenses/LICENSE-2.0 - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - Also add information on how to contact you by electronic and paper mail. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: +-------------------------------------------------------------------------------- - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. +497. Group: software.amazon.awssdk Name: http-auth-aws Version: 2.23.3 - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. +POM Project URL: https://aws.amazon.com/sdkforjava - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. +Embedded license: - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + **************************************** - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. ---- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -## CLASSPATH EXCEPTION + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + 1. Definitions. - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - **************************************** + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -# Notice for Jersey -This content is produced and maintained by the Eclipse Jersey project. - -* Project home: https://projects.eclipse.org/projects/ee4j.jersey - -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. - -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -## Source Code -The project maintains the following source code repositories: - -* https://github.com/eclipse-ee4j/jersey - -## Third-party Content - -Angular JS, v1.6.6 -* License MIT (http://www.opensource.org/licenses/mit-license.php) -* Project: http://angularjs.org -* Coyright: (c) 2010-2017 Google, Inc. - -aopalliance Version 1 -* License: all the source code provided by AOP Alliance is Public Domain. -* Project: http://aopalliance.sourceforge.net -* Copyright: Material in the public domain is not protected by copyright - -Bean Validation API 2.0.2 -* License: Apache License, 2.0 -* Project: http://beanvalidation.org/1.1/ -* Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual contributors -* by the @authors tag. - -Hibernate Validator CDI, 6.2.4.Final -* License: Apache License, 2.0 -* Project: https://beanvalidation.org/ -* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate - -Bootstrap v3.3.7 -* License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE) -* Project: http://getbootstrap.com -* Copyright: 2011-2016 Twitter, Inc - -Google Guava Version 18.0 -* License: Apache License, 2.0 -* Copyright (C) 2009 The Guava Authors - -javax.inject Version: 1 -* License: Apache License, 2.0 -* Copyright (C) 2009 The JSR-330 Expert Group - -Javassist Version 3.29.0-GA -* License: Apache License, 2.0 -* Project: http://www.javassist.org/ -* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - -Jackson JAX-RS Providers Version 2.14.1 -* License: Apache License, 2.0 -* Project: https://github.com/FasterXML/jackson-jaxrs-providers -* Copyright: (c) 2009-2022 FasterXML, LLC. All rights reserved unless otherwise indicated. - -jQuery v1.12.4 -* License: jquery.org/license -* Project: jquery.org -* Copyright: (c) jQuery Foundation - -jQuery Barcode plugin 0.3 -* License: MIT & GPL (http://www.opensource.org/licenses/mit-license.php & http://www.gnu.org/licenses/gpl.html) -* Project: http://www.pasella.it/projects/jQuery/barcode -* Copyright: (c) 2009 Antonello Pasella antonello.pasella@gmail.com - -JSR-166 Extension - JEP 266 -* License: CC0 -* No copyright -* Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ - -KineticJS, v4.7.1 -* License: MIT license (http://www.opensource.org/licenses/mit-license.php) -* Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS -* Copyright: Eric Rowell - -org.objectweb.asm Version 9.4 -* License: Modified BSD (https://asm.ow2.io/license.html) -* Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved. - -org.osgi.core version 6.0.0 -* License: Apache License, 2.0 -* Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved. - -org.glassfish.jersey.server.internal.monitoring.core -* License: Apache License, 2.0 -* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved. -* Copyright 2010-2013 Coda Hale and Yammer, Inc. - -W3.org documents -* License: W3C License -* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. --------------------------------------------------------------------------------- + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -458. Group: org.glassfish.jersey.containers Name: jersey-container-servlet-core Version: 2.39.1 + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -Manifest Project URL: https://www.eclipse.org/org/foundation/ + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -POM License: Apache License, 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -POM License: BSD 2-Clause - https://opensource.org/licenses/BSD-2-Clause + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -POM License: EDL 1.0 - http://www.eclipse.org/org/documents/edl-v10.php + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -POM License: MIT license - http://www.opensource.org/licenses/mit-license.php + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -POM License: Modified BSD - https://asm.ow2.io/license.html + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -POM License: Public Domain - https://creativecommons.org/publicdomain/zero/1.0/ + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -POM License: W3C license - https://www.w3.org/Consortium/Legal/copyright-documents-19990405 + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -POM License: jQuery licenseLicense: jquery.org/license + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -Embedded license: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - **************************************** + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -# Eclipse Public License - v 2.0 + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - 1. DEFINITIONS + END OF TERMS AND CONDITIONS - "Contribution" means: + APPENDIX: How to apply the Apache License to your work. - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + Copyright [yyyy] [name of copyright owner] - "Contributor" means any person or entity that Distributes the Program. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. + http://www.apache.org/licenses/LICENSE-2.0 - "Program" means the Contributions Distributed in accordance with this - Agreement. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. +-------------------------------------------------------------------------------- - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. +498. Group: software.amazon.awssdk Name: http-auth-aws Version: 2.25.11 - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. +POM Project URL: https://aws.amazon.com/sdkforjava - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - 2. GRANT OF RIGHTS +Embedded license: - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + **************************************** - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + 1. Definitions. - 3. REQUIREMENTS + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - 3.1 If a Contributor Distributes the Program in any form, then: + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - 3.2 When the Program is Distributed as Source Code: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - b) a copy of this Agreement must be included with each copy of - the Program. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - 4. COMMERCIAL DISTRIBUTION + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - 5. NO WARRANTY + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - 6. DISCLAIMER OF LIABILITY + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - 7. GENERAL + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + END OF TERMS AND CONDITIONS - Exhibit A - Form of Secondary Licenses Notice + APPENDIX: How to apply the Apache License to your work. - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. + Copyright [yyyy] [name of copyright owner] - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - You may add additional accurate notices of copyright ownership. + http://www.apache.org/licenses/LICENSE-2.0 ---- + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -## The GNU General Public License (GPL) Version 2, June 1991 + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +-------------------------------------------------------------------------------- - Preamble +499. Group: software.amazon.awssdk Name: http-auth-aws Version: 2.28.20 - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. +POM Project URL: https://aws.amazon.com/sdkforjava - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. +Embedded license: - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + **************************************** - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - The precise terms and conditions for copying, distribution and - modification follow. + 1. Definitions. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + END OF TERMS AND CONDITIONS - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + APPENDIX: How to apply the Apache License to your work. - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + Copyright [yyyy] [name of copyright owner] - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. + http://www.apache.org/licenses/LICENSE-2.0 - NO WARRANTY + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - END OF TERMS AND CONDITIONS +-------------------------------------------------------------------------------- - How to Apply These Terms to Your New Programs +500. Group: software.amazon.awssdk Name: http-auth-aws-eventstream Version: 2.28.20 - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. +POM Project URL: https://aws.amazon.com/sdkforjava - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - One line to give the program's name and a brief idea of what it does. - Copyright (C) +Embedded license: - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + **************************************** - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Also add information on how to contact you by electronic and paper mail. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + 1. Definitions. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. ---- + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -## CLASSPATH EXCEPTION + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - **************************************** + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -# Notice for Jersey -This content is produced and maintained by the Eclipse Jersey project. - -* Project home: https://projects.eclipse.org/projects/ee4j.jersey - -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. - -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -## Source Code -The project maintains the following source code repositories: - -* https://github.com/eclipse-ee4j/jersey - -## Third-party Content - -Angular JS, v1.6.6 -* License MIT (http://www.opensource.org/licenses/mit-license.php) -* Project: http://angularjs.org -* Coyright: (c) 2010-2017 Google, Inc. - -aopalliance Version 1 -* License: all the source code provided by AOP Alliance is Public Domain. -* Project: http://aopalliance.sourceforge.net -* Copyright: Material in the public domain is not protected by copyright - -Bean Validation API 2.0.2 -* License: Apache License, 2.0 -* Project: http://beanvalidation.org/1.1/ -* Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual contributors -* by the @authors tag. - -Hibernate Validator CDI, 6.2.4.Final -* License: Apache License, 2.0 -* Project: https://beanvalidation.org/ -* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate - -Bootstrap v3.3.7 -* License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE) -* Project: http://getbootstrap.com -* Copyright: 2011-2016 Twitter, Inc - -Google Guava Version 18.0 -* License: Apache License, 2.0 -* Copyright (C) 2009 The Guava Authors - -javax.inject Version: 1 -* License: Apache License, 2.0 -* Copyright (C) 2009 The JSR-330 Expert Group - -Javassist Version 3.29.0-GA -* License: Apache License, 2.0 -* Project: http://www.javassist.org/ -* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - -Jackson JAX-RS Providers Version 2.14.1 -* License: Apache License, 2.0 -* Project: https://github.com/FasterXML/jackson-jaxrs-providers -* Copyright: (c) 2009-2022 FasterXML, LLC. All rights reserved unless otherwise indicated. - -jQuery v1.12.4 -* License: jquery.org/license -* Project: jquery.org -* Copyright: (c) jQuery Foundation - -jQuery Barcode plugin 0.3 -* License: MIT & GPL (http://www.opensource.org/licenses/mit-license.php & http://www.gnu.org/licenses/gpl.html) -* Project: http://www.pasella.it/projects/jQuery/barcode -* Copyright: (c) 2009 Antonello Pasella antonello.pasella@gmail.com - -JSR-166 Extension - JEP 266 -* License: CC0 -* No copyright -* Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ - -KineticJS, v4.7.1 -* License: MIT license (http://www.opensource.org/licenses/mit-license.php) -* Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS -* Copyright: Eric Rowell - -org.objectweb.asm Version 9.4 -* License: Modified BSD (https://asm.ow2.io/license.html) -* Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved. - -org.osgi.core version 6.0.0 -* License: Apache License, 2.0 -* Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved. - -org.glassfish.jersey.server.internal.monitoring.core -* License: Apache License, 2.0 -* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved. -* Copyright 2010-2013 Coda Hale and Yammer, Inc. - -W3.org documents -* License: W3C License -* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. --------------------------------------------------------------------------------- + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -459. Group: org.glassfish.jersey.core Name: jersey-client Version: 2.39.1 + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -Manifest Project URL: https://www.eclipse.org/org/foundation/ + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -POM License: Apache License, 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -POM License: BSD 2-Clause - https://opensource.org/licenses/BSD-2-Clause + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -POM License: EDL 1.0 - http://www.eclipse.org/org/documents/edl-v10.php + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -POM License: MIT license - http://www.opensource.org/licenses/mit-license.php + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -POM License: Modified BSD - https://asm.ow2.io/license.html + END OF TERMS AND CONDITIONS -POM License: Public Domain - https://creativecommons.org/publicdomain/zero/1.0/ + APPENDIX: How to apply the Apache License to your work. -POM License: W3C license - https://www.w3.org/Consortium/Legal/copyright-documents-19990405 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -POM License: jQuery licenseLicense: jquery.org/license + Copyright [yyyy] [name of copyright owner] -Embedded license: + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -# Eclipse Public License - v 2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - 1. DEFINITIONS +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - "Contribution" means: +-------------------------------------------------------------------------------- - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and +501. Group: software.amazon.awssdk Name: http-auth-spi Version: 2.21.23 - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. +POM Project URL: https://aws.amazon.com/sdkforjava - "Contributor" means any person or entity that Distributes the Program. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. +Embedded license: - "Program" means the Contributions Distributed in accordance with this - Agreement. + **************************************** - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. + 1. Definitions. - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - 2. GRANT OF RIGHTS + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - 3. REQUIREMENTS + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - 3.1 If a Contributor Distributes the Program in any form, then: + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - 3.2 When the Program is Distributed as Source Code: + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - b) a copy of this Agreement must be included with each copy of - the Program. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - 4. COMMERCIAL DISTRIBUTION + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - 5. NO WARRANTY + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. + END OF TERMS AND CONDITIONS - 6. DISCLAIMER OF LIABILITY + APPENDIX: How to apply the Apache License to your work. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 7. GENERAL + Copyright [yyyy] [name of copyright owner] - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. + http://www.apache.org/licenses/LICENSE-2.0 - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - Exhibit A - Form of Secondary Licenses Notice +-------------------------------------------------------------------------------- - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." +502. Group: software.amazon.awssdk Name: http-auth-spi Version: 2.23.3 - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. +POM Project URL: https://aws.amazon.com/sdkforjava - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - You may add additional accurate notices of copyright ownership. +Embedded license: ---- + **************************************** -## The GNU General Public License (GPL) Version 2, June 1991 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - Preamble + 1. Definitions. - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - The precise terms and conditions for copying, distribution and - modification follow. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) + END OF TERMS AND CONDITIONS - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. + APPENDIX: How to apply the Apache License to your work. - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + Copyright [yyyy] [name of copyright owner] - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + http://www.apache.org/licenses/LICENSE-2.0 - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. +-------------------------------------------------------------------------------- - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. +503. Group: software.amazon.awssdk Name: http-auth-spi Version: 2.25.11 - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. +POM Project URL: https://aws.amazon.com/sdkforjava - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. +Embedded license: - NO WARRANTY + **************************************** - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - END OF TERMS AND CONDITIONS + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - How to Apply These Terms to Your New Programs + 1. Definitions. - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - One line to give the program's name and a brief idea of what it does. - Copyright (C) + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - Also add information on how to contact you by electronic and paper mail. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and ---- + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -## CLASSPATH EXCEPTION + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - **************************************** + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -# Notice for Jersey -This content is produced and maintained by the Eclipse Jersey project. - -* Project home: https://projects.eclipse.org/projects/ee4j.jersey - -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. - -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -## Source Code -The project maintains the following source code repositories: - -* https://github.com/eclipse-ee4j/jersey - -## Third-party Content - -Angular JS, v1.6.6 -* License MIT (http://www.opensource.org/licenses/mit-license.php) -* Project: http://angularjs.org -* Coyright: (c) 2010-2017 Google, Inc. - -aopalliance Version 1 -* License: all the source code provided by AOP Alliance is Public Domain. -* Project: http://aopalliance.sourceforge.net -* Copyright: Material in the public domain is not protected by copyright - -Bean Validation API 2.0.2 -* License: Apache License, 2.0 -* Project: http://beanvalidation.org/1.1/ -* Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual contributors -* by the @authors tag. - -Hibernate Validator CDI, 6.2.4.Final -* License: Apache License, 2.0 -* Project: https://beanvalidation.org/ -* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate - -Bootstrap v3.3.7 -* License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE) -* Project: http://getbootstrap.com -* Copyright: 2011-2016 Twitter, Inc - -Google Guava Version 18.0 -* License: Apache License, 2.0 -* Copyright (C) 2009 The Guava Authors - -javax.inject Version: 1 -* License: Apache License, 2.0 -* Copyright (C) 2009 The JSR-330 Expert Group - -Javassist Version 3.29.0-GA -* License: Apache License, 2.0 -* Project: http://www.javassist.org/ -* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - -Jackson JAX-RS Providers Version 2.14.1 -* License: Apache License, 2.0 -* Project: https://github.com/FasterXML/jackson-jaxrs-providers -* Copyright: (c) 2009-2022 FasterXML, LLC. All rights reserved unless otherwise indicated. - -jQuery v1.12.4 -* License: jquery.org/license -* Project: jquery.org -* Copyright: (c) jQuery Foundation - -jQuery Barcode plugin 0.3 -* License: MIT & GPL (http://www.opensource.org/licenses/mit-license.php & http://www.gnu.org/licenses/gpl.html) -* Project: http://www.pasella.it/projects/jQuery/barcode -* Copyright: (c) 2009 Antonello Pasella antonello.pasella@gmail.com - -JSR-166 Extension - JEP 266 -* License: CC0 -* No copyright -* Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ - -KineticJS, v4.7.1 -* License: MIT license (http://www.opensource.org/licenses/mit-license.php) -* Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS -* Copyright: Eric Rowell - -org.objectweb.asm Version 9.4 -* License: Modified BSD (https://asm.ow2.io/license.html) -* Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved. - -org.osgi.core version 6.0.0 -* License: Apache License, 2.0 -* Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved. - -org.glassfish.jersey.server.internal.monitoring.core -* License: Apache License, 2.0 -* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved. -* Copyright 2010-2013 Coda Hale and Yammer, Inc. - -W3.org documents -* License: W3C License -* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. --------------------------------------------------------------------------------- + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -460. Group: org.glassfish.jersey.core Name: jersey-common Version: 2.39.1 + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Manifest Project URL: https://www.eclipse.org/org/foundation/ + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -POM License: Apache License, 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + END OF TERMS AND CONDITIONS -POM License: BSD 2-Clause - https://opensource.org/licenses/BSD-2-Clause + APPENDIX: How to apply the Apache License to your work. -POM License: EDL 1.0 - http://www.eclipse.org/org/documents/edl-v10.php + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + Copyright [yyyy] [name of copyright owner] -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + http://www.apache.org/licenses/LICENSE-2.0 -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -POM License: MIT license - http://www.opensource.org/licenses/mit-license.php + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -POM License: Modified BSD - https://asm.ow2.io/license.html +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -POM License: Public Domain - https://creativecommons.org/publicdomain/zero/1.0/ +-------------------------------------------------------------------------------- -POM License: The GNU General Public License (GPL), Version 2, With Classpath Exception - https://www.gnu.org/software/classpath/license.html +504. Group: software.amazon.awssdk Name: http-auth-spi Version: 2.28.20 -POM License: W3C license - https://www.w3.org/Consortium/Legal/copyright-documents-19990405 +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: jQuery licenseLicense: jquery.org/license +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - 1. DEFINITIONS + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - "Contribution" means: + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + 1. Definitions. - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - "Contributor" means any person or entity that Distributes the Program. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - "Program" means the Contributions Distributed in accordance with this - Agreement. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - 2. GRANT OF RIGHTS + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - 3. REQUIREMENTS + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - 3.1 If a Contributor Distributes the Program in any form, then: + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - 3.2 When the Program is Distributed as Source Code: + END OF TERMS AND CONDITIONS - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + APPENDIX: How to apply the Apache License to your work. - b) a copy of this Agreement must be included with each copy of - the Program. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + Copyright [yyyy] [name of copyright owner] - 4. COMMERCIAL DISTRIBUTION + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. + http://www.apache.org/licenses/LICENSE-2.0 - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - 5. NO WARRANTY + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - 6. DISCLAIMER OF LIABILITY +-------------------------------------------------------------------------------- - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. +505. Group: software.amazon.awssdk Name: http-client-spi Version: 2.21.23 - 7. GENERAL +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. +Embedded license: - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. + **************************************** - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - Exhibit A - Form of Secondary Licenses Notice + 1. Definitions. - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - You may add additional accurate notices of copyright ownership. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. ---- + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -## The GNU General Public License (GPL) Version 2, June 1991 + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - Preamble + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - The precise terms and conditions for copying, distribution and - modification follow. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + END OF TERMS AND CONDITIONS - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + APPENDIX: How to apply the Apache License to your work. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + Copyright [yyyy] [name of copyright owner] - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + http://www.apache.org/licenses/LICENSE-2.0 - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) +-------------------------------------------------------------------------------- - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. +506. Group: software.amazon.awssdk Name: http-client-spi Version: 2.23.3 - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. +Embedded license: - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + **************************************** - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + 1. Definitions. - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - NO WARRANTY + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - END OF TERMS AND CONDITIONS + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - How to Apply These Terms to Your New Programs + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - One line to give the program's name and a brief idea of what it does. - Copyright (C) + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - Also add information on how to contact you by electronic and paper mail. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + END OF TERMS AND CONDITIONS ---- + APPENDIX: How to apply the Apache License to your work. -## CLASSPATH EXCEPTION + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + Copyright [yyyy] [name of copyright owner] - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -# Notice for Jersey Core Common module -This content is produced and maintained by the Eclipse Jersey project. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). +-------------------------------------------------------------------------------- -* https://projects.eclipse.org/projects/ee4j.jersey +507. Group: software.amazon.awssdk Name: http-client-spi Version: 2.25.11 -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -## Copyright +Embedded license: -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. + **************************************** -## Declared Project Licenses -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -## Source Code -The project maintains the following source code repositories: + 1. Definitions. -* https://github.com/eclipse-ee4j/jersey + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -## Third-party Content + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Google Guava Version 18.0 -* License: Apache License, 2.0 -* Copyright: (C) 2009 The Guava Authors + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -JSR-166 Extension - JEP 266 -* License: Creative Commons 1.0 (CC0) -* No copyright -* Written by Doug Lea with assistance from members of JCP JSR-166 -* Expert Group and released to the public domain, as explained at -* http://creativecommons.org/publicdomain/zero/1.0/ + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - **************************************** + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -# Notice for Jersey -This content is produced and maintained by the Eclipse Jersey project. - -* Project home: https://projects.eclipse.org/projects/ee4j.jersey - -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. - -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -## Source Code -The project maintains the following source code repositories: - -* https://github.com/eclipse-ee4j/jersey - -## Third-party Content - -Angular JS, v1.6.6 -* License MIT (http://www.opensource.org/licenses/mit-license.php) -* Project: http://angularjs.org -* Coyright: (c) 2010-2017 Google, Inc. - -aopalliance Version 1 -* License: all the source code provided by AOP Alliance is Public Domain. -* Project: http://aopalliance.sourceforge.net -* Copyright: Material in the public domain is not protected by copyright - -Bean Validation API 2.0.2 -* License: Apache License, 2.0 -* Project: http://beanvalidation.org/1.1/ -* Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual contributors -* by the @authors tag. - -Hibernate Validator CDI, 6.2.4.Final -* License: Apache License, 2.0 -* Project: https://beanvalidation.org/ -* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate - -Bootstrap v3.3.7 -* License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE) -* Project: http://getbootstrap.com -* Copyright: 2011-2016 Twitter, Inc - -Google Guava Version 18.0 -* License: Apache License, 2.0 -* Copyright (C) 2009 The Guava Authors - -javax.inject Version: 1 -* License: Apache License, 2.0 -* Copyright (C) 2009 The JSR-330 Expert Group - -Javassist Version 3.29.0-GA -* License: Apache License, 2.0 -* Project: http://www.javassist.org/ -* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - -Jackson JAX-RS Providers Version 2.14.1 -* License: Apache License, 2.0 -* Project: https://github.com/FasterXML/jackson-jaxrs-providers -* Copyright: (c) 2009-2022 FasterXML, LLC. All rights reserved unless otherwise indicated. - -jQuery v1.12.4 -* License: jquery.org/license -* Project: jquery.org -* Copyright: (c) jQuery Foundation - -jQuery Barcode plugin 0.3 -* License: MIT & GPL (http://www.opensource.org/licenses/mit-license.php & http://www.gnu.org/licenses/gpl.html) -* Project: http://www.pasella.it/projects/jQuery/barcode -* Copyright: (c) 2009 Antonello Pasella antonello.pasella@gmail.com - -JSR-166 Extension - JEP 266 -* License: CC0 -* No copyright -* Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ - -KineticJS, v4.7.1 -* License: MIT license (http://www.opensource.org/licenses/mit-license.php) -* Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS -* Copyright: Eric Rowell - -org.objectweb.asm Version 9.4 -* License: Modified BSD (https://asm.ow2.io/license.html) -* Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved. - -org.osgi.core version 6.0.0 -* License: Apache License, 2.0 -* Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved. - -org.glassfish.jersey.server.internal.monitoring.core -* License: Apache License, 2.0 -* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved. -* Copyright 2010-2013 Coda Hale and Yammer, Inc. - -W3.org documents -* License: W3C License -* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. --------------------------------------------------------------------------------- + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -461. Group: org.glassfish.jersey.core Name: jersey-server Version: 2.39.1 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -Manifest Project URL: https://www.eclipse.org/org/foundation/ + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -POM License: Apache License, 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -POM License: BSD 2-Clause - https://opensource.org/licenses/BSD-2-Clause + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -POM License: EDL 1.0 - http://www.eclipse.org/org/documents/edl-v10.php + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -POM License: MIT license - http://www.opensource.org/licenses/mit-license.php + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -POM License: Modified BSD - https://asm.ow2.io/license.html + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -POM License: Public Domain - https://creativecommons.org/publicdomain/zero/1.0/ + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -POM License: The GNU General Public License (GPL), Version 2, With Classpath Exception - https://www.gnu.org/software/classpath/license.html + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -POM License: W3C license - https://www.w3.org/Consortium/Legal/copyright-documents-19990405 + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -POM License: jQuery licenseLicense: jquery.org/license + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Embedded license: + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - **************************************** + END OF TERMS AND CONDITIONS -# Eclipse Public License - v 2.0 + APPENDIX: How to apply the Apache License to your work. - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 1. DEFINITIONS + Copyright [yyyy] [name of copyright owner] - "Contribution" means: + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + http://www.apache.org/licenses/LICENSE-2.0 - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - "Contributor" means any person or entity that Distributes the Program. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - "Program" means the Contributions Distributed in accordance with this - Agreement. +-------------------------------------------------------------------------------- - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. +508. Group: software.amazon.awssdk Name: http-client-spi Version: 2.28.20 - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. +Embedded license: - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. + **************************************** - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - 2. GRANT OF RIGHTS + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + 1. Definitions. - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - 3. REQUIREMENTS + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - 3.1 If a Contributor Distributes the Program in any form, then: + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - 3.2 When the Program is Distributed as Source Code: + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - b) a copy of this Agreement must be included with each copy of - the Program. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - 4. COMMERCIAL DISTRIBUTION + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - 5. NO WARRANTY + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - 6. DISCLAIMER OF LIABILITY + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - 7. GENERAL + END OF TERMS AND CONDITIONS - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. + APPENDIX: How to apply the Apache License to your work. - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. + Copyright [yyyy] [name of copyright owner] - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + http://www.apache.org/licenses/LICENSE-2.0 - Exhibit A - Form of Secondary Licenses Notice + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. +-------------------------------------------------------------------------------- - You may add additional accurate notices of copyright ownership. +509. Group: software.amazon.awssdk Name: identity-spi Version: 2.21.23 ---- +POM Project URL: https://aws.amazon.com/sdkforjava -## The GNU General Public License (GPL) Version 2, June 1991 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA +Embedded license: - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + **************************************** - Preamble - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. + 1. Definitions. - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - The precise terms and conditions for copying, distribution and - modification follow. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + END OF TERMS AND CONDITIONS - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. + APPENDIX: How to apply the Apache License to your work. - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + Copyright [yyyy] [name of copyright owner] - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + http://www.apache.org/licenses/LICENSE-2.0 - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. +-------------------------------------------------------------------------------- - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. +510. Group: software.amazon.awssdk Name: identity-spi Version: 2.23.3 - NO WARRANTY +POM Project URL: https://aws.amazon.com/sdkforjava - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +Embedded license: - END OF TERMS AND CONDITIONS + **************************************** - How to Apply These Terms to Your New Programs - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - One line to give the program's name and a brief idea of what it does. - Copyright (C) + 1. Definitions. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - Also add information on how to contact you by electronic and paper mail. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. ---- + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -## CLASSPATH EXCEPTION + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - **************************************** + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -# Notice for Jersey Core Server module -This content is produced and maintained by the Eclipse Jersey project. - -* https://projects.eclipse.org/projects/ee4j.jersey - -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. - -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -## Source Code -The project maintains the following source code repositories: - -* https://github.com/eclipse-ee4j/jersey - -## Third-party Content - -org.glassfish.jersey.server.internal.monitoring.core -* License: Apache License, 2.0 -* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved. -* Copyright 2010-2013 Coda Hale and Yammer, Inc. - -org.objectweb.asm Version 9.4 -* License: Modified BSD (https://asm.ow2.io/license.html) -* Copyright: (c) 2000-2011 INRIA, France Telecom. All rights reserved. - -W3.org documents -* License: W3C License -* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - **************************************** + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -# Notice for Jersey -This content is produced and maintained by the Eclipse Jersey project. - -* Project home: https://projects.eclipse.org/projects/ee4j.jersey - -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. - -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -## Source Code -The project maintains the following source code repositories: - -* https://github.com/eclipse-ee4j/jersey - -## Third-party Content - -Angular JS, v1.6.6 -* License MIT (http://www.opensource.org/licenses/mit-license.php) -* Project: http://angularjs.org -* Coyright: (c) 2010-2017 Google, Inc. - -aopalliance Version 1 -* License: all the source code provided by AOP Alliance is Public Domain. -* Project: http://aopalliance.sourceforge.net -* Copyright: Material in the public domain is not protected by copyright - -Bean Validation API 2.0.2 -* License: Apache License, 2.0 -* Project: http://beanvalidation.org/1.1/ -* Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual contributors -* by the @authors tag. - -Hibernate Validator CDI, 6.2.4.Final -* License: Apache License, 2.0 -* Project: https://beanvalidation.org/ -* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate - -Bootstrap v3.3.7 -* License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE) -* Project: http://getbootstrap.com -* Copyright: 2011-2016 Twitter, Inc - -Google Guava Version 18.0 -* License: Apache License, 2.0 -* Copyright (C) 2009 The Guava Authors - -javax.inject Version: 1 -* License: Apache License, 2.0 -* Copyright (C) 2009 The JSR-330 Expert Group - -Javassist Version 3.29.0-GA -* License: Apache License, 2.0 -* Project: http://www.javassist.org/ -* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - -Jackson JAX-RS Providers Version 2.14.1 -* License: Apache License, 2.0 -* Project: https://github.com/FasterXML/jackson-jaxrs-providers -* Copyright: (c) 2009-2022 FasterXML, LLC. All rights reserved unless otherwise indicated. - -jQuery v1.12.4 -* License: jquery.org/license -* Project: jquery.org -* Copyright: (c) jQuery Foundation - -jQuery Barcode plugin 0.3 -* License: MIT & GPL (http://www.opensource.org/licenses/mit-license.php & http://www.gnu.org/licenses/gpl.html) -* Project: http://www.pasella.it/projects/jQuery/barcode -* Copyright: (c) 2009 Antonello Pasella antonello.pasella@gmail.com - -JSR-166 Extension - JEP 266 -* License: CC0 -* No copyright -* Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ - -KineticJS, v4.7.1 -* License: MIT license (http://www.opensource.org/licenses/mit-license.php) -* Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS -* Copyright: Eric Rowell - -org.objectweb.asm Version 9.4 -* License: Modified BSD (https://asm.ow2.io/license.html) -* Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved. - -org.osgi.core version 6.0.0 -* License: Apache License, 2.0 -* Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved. - -org.glassfish.jersey.server.internal.monitoring.core -* License: Apache License, 2.0 -* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved. -* Copyright 2010-2013 Coda Hale and Yammer, Inc. - -W3.org documents -* License: W3C License -* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. --------------------------------------------------------------------------------- + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -462. Group: org.glassfish.jersey.inject Name: jersey-hk2 Version: 2.39.1 + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -Manifest Project URL: https://www.eclipse.org/org/foundation/ + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -POM License: Apache License, 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -POM License: BSD 2-Clause - https://opensource.org/licenses/BSD-2-Clause + END OF TERMS AND CONDITIONS -POM License: EDL 1.0 - http://www.eclipse.org/org/documents/edl-v10.php + APPENDIX: How to apply the Apache License to your work. -POM License: EPL 2.0 - http://www.eclipse.org/legal/epl-2.0 + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -POM License: Eclipse Public License v. 2.0 - https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + Copyright [yyyy] [name of copyright owner] -POM License: GNU General Public License, version 2 with the GNU Classpath Exception - https://www.gnu.org/software/classpath/license.html + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -POM License: GPL2 w/ CPE - https://www.gnu.org/software/classpath/license.html + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -POM License: MIT license - http://www.opensource.org/licenses/mit-license.php +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -POM License: Modified BSD - https://asm.ow2.io/license.html +-------------------------------------------------------------------------------- -POM License: Public Domain - https://creativecommons.org/publicdomain/zero/1.0/ +511. Group: software.amazon.awssdk Name: identity-spi Version: 2.25.11 -POM License: W3C license - https://www.w3.org/Consortium/Legal/copyright-documents-19990405 +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: jQuery licenseLicense: jquery.org/license +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** -# Eclipse Public License - v 2.0 - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - 1. DEFINITIONS + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - "Contribution" means: + 1. Definitions. - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - "Contributor" means any person or entity that Distributes the Program. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - "Program" means the Contributions Distributed in accordance with this - Agreement. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - 2. GRANT OF RIGHTS + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - 3. REQUIREMENTS + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - 3.1 If a Contributor Distributes the Program in any form, then: + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + END OF TERMS AND CONDITIONS - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + APPENDIX: How to apply the Apache License to your work. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - 3.2 When the Program is Distributed as Source Code: + Copyright [yyyy] [name of copyright owner] - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - b) a copy of this Agreement must be included with each copy of - the Program. + http://www.apache.org/licenses/LICENSE-2.0 - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - 4. COMMERCIAL DISTRIBUTION + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. +-------------------------------------------------------------------------------- - 5. NO WARRANTY +512. Group: software.amazon.awssdk Name: identity-spi Version: 2.28.20 - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. +POM Project URL: https://aws.amazon.com/sdkforjava - 6. DISCLAIMER OF LIABILITY +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. +Embedded license: - 7. GENERAL + **************************************** - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. + 1. Definitions. - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - Exhibit A - Form of Secondary Licenses Notice + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - You may add additional accurate notices of copyright ownership. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. ---- + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -## The GNU General Public License (GPL) Version 2, June 1991 + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - Preamble + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - The precise terms and conditions for copying, distribution and - modification follow. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. + END OF TERMS AND CONDITIONS - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: + APPENDIX: How to apply the Apache License to your work. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. + Copyright [yyyy] [name of copyright owner] - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. + http://www.apache.org/licenses/LICENSE-2.0 - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, +-------------------------------------------------------------------------------- - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, +513. Group: software.amazon.awssdk Name: json-utils Version: 2.21.23 - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) +POM Project URL: https://aws.amazon.com/sdkforjava - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. +Embedded license: - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. + **************************************** - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. + 1. Definitions. - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - NO WARRANTY + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - END OF TERMS AND CONDITIONS + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - How to Apply These Terms to Your New Programs + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - One line to give the program's name and a brief idea of what it does. - Copyright (C) + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - Also add information on how to contact you by electronic and paper mail. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice + END OF TERMS AND CONDITIONS - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. + APPENDIX: How to apply the Apache License to your work. ---- + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -## CLASSPATH EXCEPTION + Copyright [yyyy] [name of copyright owner] - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -# Notice for Jersey -This content is produced and maintained by the Eclipse Jersey project. - -* Project home: https://projects.eclipse.org/projects/ee4j.jersey - -## Trademarks -Eclipse Jersey is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v. 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made -available under the following Secondary Licenses when the conditions for such -availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU -General Public License, version 2 with the GNU Classpath Exception which is -available at https://www.gnu.org/software/classpath/license.html. - -SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -## Source Code -The project maintains the following source code repositories: - -* https://github.com/eclipse-ee4j/jersey - -## Third-party Content - -Angular JS, v1.6.6 -* License MIT (http://www.opensource.org/licenses/mit-license.php) -* Project: http://angularjs.org -* Coyright: (c) 2010-2017 Google, Inc. - -aopalliance Version 1 -* License: all the source code provided by AOP Alliance is Public Domain. -* Project: http://aopalliance.sourceforge.net -* Copyright: Material in the public domain is not protected by copyright - -Bean Validation API 2.0.2 -* License: Apache License, 2.0 -* Project: http://beanvalidation.org/1.1/ -* Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual contributors -* by the @authors tag. - -Hibernate Validator CDI, 6.2.4.Final -* License: Apache License, 2.0 -* Project: https://beanvalidation.org/ -* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate - -Bootstrap v3.3.7 -* License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE) -* Project: http://getbootstrap.com -* Copyright: 2011-2016 Twitter, Inc - -Google Guava Version 18.0 -* License: Apache License, 2.0 -* Copyright (C) 2009 The Guava Authors - -javax.inject Version: 1 -* License: Apache License, 2.0 -* Copyright (C) 2009 The JSR-330 Expert Group - -Javassist Version 3.29.0-GA -* License: Apache License, 2.0 -* Project: http://www.javassist.org/ -* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - -Jackson JAX-RS Providers Version 2.14.1 -* License: Apache License, 2.0 -* Project: https://github.com/FasterXML/jackson-jaxrs-providers -* Copyright: (c) 2009-2022 FasterXML, LLC. All rights reserved unless otherwise indicated. - -jQuery v1.12.4 -* License: jquery.org/license -* Project: jquery.org -* Copyright: (c) jQuery Foundation - -jQuery Barcode plugin 0.3 -* License: MIT & GPL (http://www.opensource.org/licenses/mit-license.php & http://www.gnu.org/licenses/gpl.html) -* Project: http://www.pasella.it/projects/jQuery/barcode -* Copyright: (c) 2009 Antonello Pasella antonello.pasella@gmail.com - -JSR-166 Extension - JEP 266 -* License: CC0 -* No copyright -* Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ - -KineticJS, v4.7.1 -* License: MIT license (http://www.opensource.org/licenses/mit-license.php) -* Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS -* Copyright: Eric Rowell +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -org.objectweb.asm Version 9.4 -* License: Modified BSD (https://asm.ow2.io/license.html) -* Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved. +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). -org.osgi.core version 6.0.0 -* License: Apache License, 2.0 -* Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved. +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary -org.glassfish.jersey.server.internal.monitoring.core -* License: Apache License, 2.0 -* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved. -* Copyright 2010-2013 Coda Hale and Yammer, Inc. +The licenses for these third party components are included in LICENSE.txt -W3.org documents -* License: W3C License -* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -463. Group: org.hamcrest Name: hamcrest Version: 2.2 +514. Group: software.amazon.awssdk Name: json-utils Version: 2.23.3 -POM Project URL: http://hamcrest.org/JavaHamcrest/ +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: BSD License 3 - http://opensource.org/licenses/BSD-3-Clause +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 --------------------------------------------------------------------------------- +Embedded license: -464. Group: org.hdrhistogram Name: HdrHistogram Version: 2.1.12 + **************************************** -POM Project URL: http://hdrhistogram.github.io/HdrHistogram/ -POM License: BSD-2-Clause - https://opensource.org/licenses/BSD-2-Clause + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -POM License: Public Domain, per Creative Commons CC0 - http://creativecommons.org/publicdomain/zero/1.0/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION --------------------------------------------------------------------------------- + 1. Definitions. -465. Group: org.hibernate.validator Name: hibernate-validator Version: 6.1.7.Final + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. --------------------------------------------------------------------------------- + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -466. Group: org.hibernate.validator Name: hibernate-validator Version: 7.0.5.Final + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. --------------------------------------------------------------------------------- + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -467. Group: org.hibernate.validator Name: hibernate-validator Version: 8.0.0.Final + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. --------------------------------------------------------------------------------- + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -468. Group: org.hibernate.validator Name: hibernate-validator Version: 8.0.1.Final + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -POM License: Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. --------------------------------------------------------------------------------- + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -469. Group: org.javassist Name: javassist Version: 3.26.0-GA + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -POM Project URL: http://www.javassist.org/ + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -POM License: Apache License 2.0 - http://www.apache.org/licenses/ + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -POM License: LGPL 2.1 - http://www.gnu.org/licenses/lgpl-2.1.html + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -POM License: MPL 1.1 - http://www.mozilla.org/MPL/MPL-1.1.html + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. --------------------------------------------------------------------------------- + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -470. Group: org.javassist Name: javassist Version: 3.29.0-GA + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -POM Project URL: http://www.javassist.org/ + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -POM License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -POM License: LGPL 2.1 - http://www.gnu.org/licenses/lgpl-2.1.html + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -POM License: MPL 1.1 - http://www.mozilla.org/MPL/MPL-1.1.html + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. --------------------------------------------------------------------------------- + END OF TERMS AND CONDITIONS -471. Group: org.javatuples Name: javatuples Version: 1.2 + APPENDIX: How to apply the Apache License to your work. -POM Project URL: http://www.javatuples.org + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + Copyright [yyyy] [name of copyright owner] -Embedded license: + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - Copyright (c) 2010, The JAVATUPLES team (http://www.javatuples.org) - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -472. Group: org.jboss.logging Name: jboss-logging Version: 3.3.2.Final - -Project URL: http://www.jboss.org +515. Group: software.amazon.awssdk Name: json-utils Version: 2.25.11 -POM License: Apache License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -81188,15 +74110,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -473. Group: org.jboss.logging Name: jboss-logging Version: 3.4.1.Final +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Project URL: http://www.jboss.org +-------------------------------------------------------------------------------- -POM License: Apache License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +516. Group: software.amazon.awssdk Name: json-utils Version: 2.28.20 -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM Project URL: https://aws.amazon.com/sdkforjava + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -81405,15 +74356,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** + +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -474. Group: org.jboss.logging Name: jboss-logging Version: 3.4.3.Final +-------------------------------------------------------------------------------- -Project URL: http://www.jboss.org +517. Group: software.amazon.awssdk Name: kafka Version: 2.23.3 -POM License: Apache License, version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Public Domain - http://repository.jboss.org/licenses/cc0-1.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -81622,778 +74602,782 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------------------------------------- - -475. Group: org.jetbrains Name: annotations Version: 13.0 - -POM Project URL: http://www.jetbrains.org - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -476. Group: org.jetbrains.kotlin Name: kotlin-reflect Version: 1.7.10 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -477. Group: org.jetbrains.kotlin Name: kotlin-reflect Version: 1.8.21 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -478. Group: org.jetbrains.kotlin Name: kotlin-script-runtime Version: 1.7.10 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -479. Group: org.jetbrains.kotlin Name: kotlin-scripting-common Version: 1.7.10 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -480. Group: org.jetbrains.kotlin Name: kotlin-scripting-compiler-embeddable Version: 1.7.10 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -481. Group: org.jetbrains.kotlin Name: kotlin-scripting-compiler-impl-embeddable Version: 1.7.10 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -482. Group: org.jetbrains.kotlin Name: kotlin-scripting-jvm Version: 1.7.10 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -483. Group: org.jetbrains.kotlin Name: kotlin-stdlib Version: 1.8.21 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -484. Group: org.jetbrains.kotlin Name: kotlin-stdlib Version: 1.9.0 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -485. Group: org.jetbrains.kotlin Name: kotlin-stdlib-common Version: 1.8.21 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -486. Group: org.jetbrains.kotlin Name: kotlin-stdlib-common Version: 1.9.0 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -487. Group: org.jetbrains.kotlin Name: kotlin-stdlib-jdk7 Version: 1.9.0 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -488. Group: org.jetbrains.kotlin Name: kotlin-stdlib-jdk8 Version: 1.9.0 - -POM Project URL: https://kotlinlang.org/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -489. Group: org.jetbrains.kotlinx Name: kotlinx-serialization-core Version: 1.5.1 - -No license information found - -490. Group: org.jetbrains.kotlinx Name: kotlinx-serialization-core-jvm Version: 1.5.1 - -POM Project URL: https://github.com/Kotlin/kotlinx.serialization - -POM License: The Apache Software License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -491. Group: org.jline Name: jline Version: 3.9.0 - -POM License: The BSD License - http://www.opensource.org/licenses/bsd-license.php - --------------------------------------------------------------------------------- - -492. Group: org.json Name: json Version: 20231013 - -POM Project URL: https://github.com/douglascrockford/JSON-java - -POM License: Public Domain - https://github.com/stleary/JSON-java/blob/master/LICENSE - --------------------------------------------------------------------------------- - -493. Group: org.latencyutils Name: LatencyUtils Version: 2.0.3 - -POM Project URL: http://latencyutils.github.io/LatencyUtils/ - -POM License: Public Domain, per Creative Commons CC0 - http://creativecommons.org/publicdomain/zero/1.0/ - --------------------------------------------------------------------------------- - -494. Group: org.locationtech.jts Name: jts-core Version: 1.15.0 - -POM License: Eclipse Distribution License - v 1.0 - https://github.com/locationtech/jts/blob/master/LICENSE_EDLv1.txt - -POM License: Eclipse Publish License, Version 1.0 - https://github.com/locationtech/jts/blob/master/LICENSE_EPLv1.txt - --------------------------------------------------------------------------------- - -495. Group: org.locationtech.spatial4j Name: spatial4j Version: 0.7 - -Manifest Project URL: http://www.locationtech.org/ - -POM Project URL: https://projects.eclipse.org/projects/locationtech.spatial4j - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -496. Group: org.lz4 Name: lz4-java Version: 1.8.0 - -POM Project URL: https://github.com/lz4/lz4-java - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -497. Group: org.mapdb Name: elsa Version: 3.0.0-M5 - -POM Project URL: http://www.mapdb.org - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -498. Group: org.mapdb Name: mapdb Version: 3.0.8 - -POM Project URL: http://www.mapdb.org - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -499. Group: org.mongodb Name: bson Version: 4.7.1 - -POM Project URL: https://bsonspec.org - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -500. Group: org.mongodb Name: bson-record-codec Version: 4.7.1 - -POM Project URL: https://www.mongodb.com/ + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -501. Group: org.mongodb Name: mongodb-driver-core Version: 4.7.1 +518. Group: software.amazon.awssdk Name: kinesis Version: 2.25.11 -POM Project URL: https://www.mongodb.com/ - -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- +POM Project URL: https://aws.amazon.com/sdkforjava -502. Group: org.mongodb Name: mongodb-driver-sync Version: 4.7.1 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -POM Project URL: https://www.mongodb.com/ +Embedded license: -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + **************************************** --------------------------------------------------------------------------------- -503. Group: org.mozilla Name: rhino Version: 1.7.7.2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -POM Project URL: https://developer.mozilla.org/en/Rhino + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -POM License: Mozilla Public License, Version 2.0 - http://www.mozilla.org/MPL/2.0/index.txt + 1. Definitions. -Embedded license: + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - **************************************** + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -The majority of Rhino is licensed under the MPL 2.0: + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -Mozilla Public License Version 2.0 -================================== + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -1. Definitions --------------- + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -1.3. "Contribution" - means Covered Software of a particular Contributor. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -1.5. "Incompatible With Secondary Licenses" - means + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -1.6. "Executable Form" - means any form of the work other than Source Code Form. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -1.8. "License" - means this document. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -1.10. "Modifications" - means any of the following: + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - (b) any new file in Source Code Form that contains any Covered - Software. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -1.13. "Source Code Form" - means the form of the work preferred for making modifications. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - 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. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -2. License Grants and Conditions --------------------------------- + END OF TERMS AND CONDITIONS -2.1. Grants + APPENDIX: How to apply the Apache License to your work. -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and + Copyright [yyyy] [name of copyright owner] -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -2.2. Effective Date + http://www.apache.org/licenses/LICENSE-2.0 -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -2.3. Limitations on Grant Scope + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -(a) for any code that a Contributor has removed from Covered Software; - or +-------------------------------------------------------------------------------- -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or +519. Group: software.amazon.awssdk Name: kms Version: 2.23.3 -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. +POM Project URL: https://aws.amazon.com/sdkforjava -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -2.4. Subsequent Licenses +Embedded license: -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). + **************************************** -2.5. Representation -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -2.6. Fair Use + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. + 1. Definitions. -2.7. Conditions + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -3. Responsibilities -------------------- + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -3.1. Distribution of Source Form + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -3.2. Distribution of Executable Form + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -If You distribute Covered Software in Executable Form then: + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -3.3. Distribution of a Larger Work + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -3.4. Notices + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -3.5. Application of Additional Terms + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -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 Software 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 placed in a text file included with all distributions of the Covered -Software under this License. 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. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -5. Termination --------------- + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software 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 Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any 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 Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, 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. * -* * -************************************************************************ + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -8. Litigation -------------- + END OF TERMS AND CONDITIONS -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. + APPENDIX: How to apply the Apache License to your work. -9. Miscellaneous ----------------- + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -This License represents the complete agreement concerning the 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. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. + Copyright [yyyy] [name of copyright owner] -10. Versions of the License ---------------------------- + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -10.1. New Versions + http://www.apache.org/licenses/LICENSE-2.0 -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -10.2. Effect of New Versions + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -10.3. Modified Versions +-------------------------------------------------------------------------------- -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). +520. Group: software.amazon.awssdk Name: lambda Version: 2.21.23 -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses +POM Project URL: https://aws.amazon.com/sdkforjava -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -Exhibit A - Source Code Form License Notice -------------------------------------------- +Embedded license: - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. + **************************************** -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. -You may add additional accurate notices of copyright ownership. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. + 1. Definitions. - **************************************** + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at http://mozilla.org/MPL/2.0/. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -USING IDSWITCH GENERATOR TOOL + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -Usage: -java org.mozilla.javascript.tools.idswitch.Main + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -The main purpose of this utility is to generate Java code to map strings to some ids that can be used, for example, in a switch statement. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -The utility scans the input file for lines with the following structure: + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -// #string_id_map# -... -// #generated# -... -// #/generated# -... -// #/string_id_map# + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Then every line in is scanned for the pattern: -^[ \t]*Id_([0-9a-zA-Z_]+)[ \t]*=.*$ + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -Each such patterns adds a mapping form string $1 to Id_\$ or if the line also contains the pattern //\s*#string=\s*([^#]+)\s*#, then it adds map of $1 in this pattern to Id_\$ + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -After that lines in are replaced by a code block that sets variable "id" to Id_ if variable "s" equals (or value defined by //#string=...# construction in the line with Id_) or 0 otherwise. -If the new code for is identical to old one, the file is not touched otherwise is overwritten by the new code and a time stamp is appended after #generated#. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -For example, if file x.java contains: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -// #string_id_map# + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - private int getId(String s) { - int id; -// #generated# Initial version -// #/generated# - return id; - } + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - private static final int - Id_x = 1, - Id_y = 2, - Id_hello = 3, // #string = Hello, World! # - Id_symbols = 4, // #string=<<*Symbols*>># - Id_nice = 5, - Id_for = 6, - Id_bar = 7; + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -// #/string_id_map# + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -.... + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - private double getFieldValue(String s) { + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -// #string_id_map# - final int - Id_field1 = 1, - Id_field2 = 2, - Id_field3 = 3, - Id_one_more_field = 4; // #string = ONE%MORE%FIELD# + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - int id; -// #generated# Initial version -// #/generated# -// #/string_id_map# - switch (id) { - case Id_field1: return field1; - case Id_field2: return field2; - case Id_field3: return field3; - case Id_one_more_field: return one_more_field; - } - throw new RuntimeException("No such field"); - } + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -then invocation + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -java org.mozilla.javascript.tools.idswitch.Main x.java + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -would replace that by a code fragment similar to: + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -// #string_id_map# + END OF TERMS AND CONDITIONS - private int getId(String s) { - int id; -// #generated# Last update: 2001-05-25 18:00:24 GMT+02:00 - L0: { id = 0; String X = null; int c; - L: switch (s.length()) { - case 1: c=s.charAt(0); - if (c=='x') { id=Id_x; break L0; } - else if (c=='y') { id=Id_y; break L0; } - break L; - case 3: c=s.charAt(0); - if (c=='b') { if (s.charAt(2)=='r' && s.charAt(1)=='a') {id=Id_bar; break L0;} } - else if (c=='f') { if (s.charAt(2)=='r' && s.charAt(1)=='o') {id=Id_for; break L0;} } - break L; - case 4: X="nice";id=Id_nice; break L; - case 13: c=s.charAt(0); - if (c=='<') { X="<<*Symbols*>>";id=Id_symbols; } - else if (c=='H') { X="Hello, World!";id=Id_hello; } - break L; - } - if (X!=null && X!=s && !X.equals(s)) id = 0; - } -// #/generated# - return id; - } + APPENDIX: How to apply the Apache License to your work. - private static final int - Id_x = 1, - Id_y = 2, - Id_hello = 3, // #string = Hello, World! # - Id_symbols = 4, // #string=<<*Symbols*>># - Id_nice = 5, - Id_for = 6, - Id_bar = 7; + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -// #/string_id_map# + Copyright [yyyy] [name of copyright owner] -.... + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - private double getFieldValue(String s) { + http://www.apache.org/licenses/LICENSE-2.0 -// #string_id_map# - final int - Id_field1 = 1, - Id_field2 = 2, - Id_field3 = 3, - Id_one_more_field = 4; // #string = ONE%MORE%FIELD# + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. - int id; -// #generated# Last update: 2001-05-25 16:48:50 GMT+02:00 - L0: { id = 0; String X = null; int c; - int s_length = s.length(); - if (s_length==6) { - c=s.charAt(5); - if (c=='1') { X="field1";id=Id_field1; } - else if (c=='2') { X="field2";id=Id_field2; } - else if (c=='3') { X="field3";id=Id_field3; } - } - else if (s_length==14) { X="ONE%MORE%FIELD";id=Id_one_more_field; } - if (X!=null && X!=s && !X.equals(s)) id = 0; - } -// #/generated# -// #/string_id_map# - switch (id) { - case Id_field1: return field1; - case Id_field2: return field2; - case Id_field3: return field3; - case Id_one_more_field: return one_more_field; - } - throw new RuntimeException("No such field"); - } + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** + +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -504. Group: org.opensearch Name: opensearch Version: 1.3.13 +521. Group: software.amazon.awssdk Name: lambda Version: 2.23.3 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -82602,28 +75586,42 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -505. Group: org.opensearch Name: opensearch-cli Version: 1.3.13 +522. Group: software.amazon.awssdk Name: metrics-spi Version: 2.21.23 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -82832,28 +75830,42 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -506. Group: org.opensearch Name: opensearch-core Version: 1.3.13 - -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +523. Group: software.amazon.awssdk Name: metrics-spi Version: 2.23.3 -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -83062,28 +76074,42 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -507. Group: org.opensearch Name: opensearch-geo Version: 1.3.13 +524. Group: software.amazon.awssdk Name: metrics-spi Version: 2.25.11 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -83292,28 +76318,42 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -508. Group: org.opensearch Name: opensearch-secure-sm Version: 1.3.13 - -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +525. Group: software.amazon.awssdk Name: metrics-spi Version: 2.28.20 -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -83522,28 +76562,286 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch +-------------------------------------------------------------------------------- -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). +526. Group: software.amazon.awssdk Name: netty-nio-client Version: 2.21.23 -This product includes software developed by -Joda.org (http://www.joda.org/). +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 --------------------------------------------------------------------------------- +Embedded license: -509. Group: org.opensearch Name: opensearch-x-content Version: 1.3.13 + **************************************** -POM Project URL: https://github.com/opensearch-project/OpenSearch.git -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** + +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). + +-------------------------------------------------------------------------------- + +527. Group: software.amazon.awssdk Name: netty-nio-client Version: 2.23.3 + +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -83752,33 +77050,48 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -510. Group: org.opensearch.client Name: opensearch-java Version: 2.8.1 - -POM Project URL: https://github.com/opensearch-project/opensearch-java/ +528. Group: software.amazon.awssdk Name: netty-nio-client Version: 2.25.11 -POM License: The Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -83981,22 +77294,42 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch Java Client -Copyright 2021 Elasticsearch B.V. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -511. Group: org.opensearch.client Name: opensearch-rest-client Version: 2.7.0 - -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +529. Group: software.amazon.awssdk Name: netty-nio-client Version: 2.28.20 -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -84205,28 +77538,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -512. Group: org.opensearch.client Name: opensearch-rest-high-level-client Version: 1.3.13 +530. Group: software.amazon.awssdk Name: opensearchserverless Version: 2.21.23 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -84435,28 +77784,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -513. Group: org.opensearch.plugin Name: aggs-matrix-stats-client Version: 1.3.13 +531. Group: software.amazon.awssdk Name: opensearchserverless Version: 2.23.3 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -84665,28 +78030,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -514. Group: org.opensearch.plugin Name: lang-mustache-client Version: 1.3.13 +532. Group: software.amazon.awssdk Name: personalizeevents Version: 2.21.23 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -84895,28 +78276,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -515. Group: org.opensearch.plugin Name: mapper-extras-client Version: 1.3.13 +533. Group: software.amazon.awssdk Name: personalizeevents Version: 2.23.3 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -85125,28 +78522,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -516. Group: org.opensearch.plugin Name: parent-join-client Version: 1.3.13 +534. Group: software.amazon.awssdk Name: profiles Version: 2.21.23 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -85355,28 +78768,44 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -517. Group: org.opensearch.plugin Name: rank-eval-client Version: 1.3.13 +535. Group: software.amazon.awssdk Name: profiles Version: 2.23.3 -POM Project URL: https://github.com/opensearch-project/OpenSearch.git +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: @@ -85585,244 +79014,49 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -OpenSearch (https://opensearch.org/) -Copyright OpenSearch Contributors - -This product includes software developed by -Elasticsearch (http://www.elastic.co). -Copyright 2009-2018 Elasticsearch - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by -Joda.org (http://www.joda.org/). - --------------------------------------------------------------------------------- - -518. Group: org.ow2.asm Name: asm Version: 9.6 - -Manifest Project URL: http://asm.ow2.org - -Manifest License: BSD-3-Clause;link=https://asm.ow2.io/LICENSE.txt (Not packaged) - -POM Project URL: http://asm.ow2.io/ - -POM License: BSD-3-Clause - https://asm.ow2.io/license.html - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -519. Group: org.ow2.asm Name: asm-commons Version: 9.6 - -Manifest Project URL: http://asm.ow2.org - -Manifest License: BSD-3-Clause;link=https://asm.ow2.io/LICENSE.txt (Not packaged) - -POM Project URL: http://asm.ow2.io/ - -POM License: BSD-3-Clause - https://asm.ow2.io/license.html - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - --------------------------------------------------------------------------------- - -520. Group: org.ow2.asm Name: asm-tree Version: 9.6 - -Manifest Project URL: http://asm.ow2.org - -Manifest License: BSD-3-Clause;link=https://asm.ow2.io/LICENSE.txt (Not packaged) - -POM Project URL: http://asm.ow2.io/ - -POM License: BSD-3-Clause - https://asm.ow2.io/license.html - -POM License: The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -521. Group: org.postgresql Name: postgresql Version: 42.5.1 - -Manifest Project URL: https://jdbc.postgresql.org/ - -Manifest License: BSD-2-Clause (Not packaged) +536. Group: software.amazon.awssdk Name: profiles Version: 2.25.11 -POM Project URL: https://jdbc.postgresql.org +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: BSD-2-Clause - https://jdbc.postgresql.org/about/license.html +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** -Copyright (c) 1997, PostgreSQL Global Development Group -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -Additional License files can be found in the 'licenses' folder located in the same directory as the LICENSE file (i.e. this file) - -- Software produced outside the ASF which is available under other licenses (not Apache-2.0) - -BSD-2-Clause -* com.ongres.scram:client:2.1 -* com.ongres.scram:common:2.1 -* com.ongres.stringprep:saslprep:1.1 -* com.ongres.stringprep:stringprep:1.1 - - **************************************** - -Copyright 2017, OnGres. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - **************************************** - -Copyright 2017, OnGres. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - **************************************** - -Copyright 2019, OnGres. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - **************************************** - -Copyright 2019, OnGres. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -522. Group: org.reactivestreams Name: reactive-streams Version: 1.0.4 - -Manifest Project URL: http://reactive-streams.org - -POM Project URL: http://www.reactive-streams.org/ - -POM License: MIT-0 - https://spdx.org/licenses/MIT-0.html - --------------------------------------------------------------------------------- - -523. Group: org.reflections Name: reflections Version: 0.9.12 - -POM Project URL: http://github.com/ronmamo/reflections - -POM License: The New BSD License - http://www.opensource.org/licenses/bsd-license.html - -POM License: WTFPL - http://www.wtfpl.net/ - --------------------------------------------------------------------------------- - -524. Group: org.scala-lang Name: scala-library Version: 2.13.12 - -POM Project URL: https://www.scala-lang.org/ - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0 - -Embedded license: - - **************************************** Apache License Version 2.0, January 2004 @@ -86026,37 +79260,50 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Scala -Copyright (c) 2002-2023 EPFL -Copyright (c) 2011-2023 Lightbend, Inc. - -Scala includes software developed at -LAMP/EPFL (https://lamp.epfl.ch/) and -Lightbend, Inc. (https://www.lightbend.com/). - -Licensed under the Apache License, Version 2.0 (the "License"). -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -This software includes projects with other licenses -- see `doc/LICENSE.md`. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -525. Group: org.scala-lang Name: scala-reflect Version: 2.13.10 +537. Group: software.amazon.awssdk Name: profiles Version: 2.28.20 -POM Project URL: https://www.scala-lang.org/ +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -86259,94 +79506,53 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Scala -Copyright (c) 2002-2022 EPFL -Copyright (c) 2011-2022 Lightbend, Inc. - -Scala includes software developed at -LAMP/EPFL (https://lamp.epfl.ch/) and -Lightbend, Inc. (https://www.lightbend.com/). - -Licensed under the Apache License, Version 2.0 (the "License"). -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -This software includes projects with other licenses -- see `doc/LICENSE.md`. - --------------------------------------------------------------------------------- - -526. Group: org.scala-lang.modules Name: scala-collection-compat_2.13 Version: 2.10.0 - -POM Project URL: http://www.scala-lang.org/ - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -527. Group: org.scala-lang.modules Name: scala-collection-compat_2.13 Version: 2.6.0 - -POM Project URL: http://www.scala-lang.org/ - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -528. Group: org.scala-lang.modules Name: scala-java8-compat_2.13 Version: 1.0.2 - -POM Project URL: http://www.scala-lang.org/ - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -529. Group: org.slf4j Name: slf4j-api Version: 2.0.6 - -Manifest Project URL: http://www.qos.ch - -POM Project URL: http://www.slf4j.org - -POM License: MIT License - http://www.opensource.org/licenses/mit-license.php - --------------------------------------------------------------------------------- - -530. Group: org.slf4j Name: slf4j-log4j12 Version: 1.7.36 - -No license information found - -531. Group: org.slf4j Name: slf4j-reload4j Version: 1.7.36 - -POM Project URL: http://reload4j.qos.ch - -POM License: MIT License - http://www.opensource.org/licenses/mit-license.php - --------------------------------------------------------------------------------- - -532. Group: org.snakeyaml Name: snakeyaml-engine Version: 2.6 - -POM Project URL: https://bitbucket.org/snakeyaml/snakeyaml-engine - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -533. Group: org.springframework Name: spring-aop Version: 5.3.28 +538. Group: software.amazon.awssdk Name: protocol-core Version: 2.21.23 -POM Project URL: https://github.com/spring-projects/spring-framework +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 - https://www.apache.org/licenses/ + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -86538,7 +79744,7 @@ Embedded license: you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -86546,123 +79752,299 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -======================================================================= + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. + **************************************** -SPRING FRAMEWORK 5.3.28 SUBCOMPONENTS: +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -Spring Framework 5.3.28 includes a number of subcomponents -with separate copyright notices and license terms. The product that -includes this file does not necessarily use all the open source -subcomponents referred to below. Your use of the source -code for these subcomponents is subject to the terms and -conditions of the following licenses. +-------------------------------------------------------------------------------- +539. Group: software.amazon.awssdk Name: protocol-core Version: 2.23.3 ->>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): +POM Project URL: https://aws.amazon.com/sdkforjava -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +Embedded license: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + **************************************** -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Copyright (c) 1999-2009, OW2 Consortium + 1. Definitions. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. ->>> CGLIB 3.3 (cglib:cglib:3.3): + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -Per the LICENSE file in the CGLIB JAR distribution downloaded from -https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, -CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which -is included above. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. ->>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -Per the LICENSE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html, Objenesis 3.2 is licensed under the -Apache License, version 2.0, the text of which is included above. + END OF TERMS AND CONDITIONS -Per the NOTICE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html and corresponding to section 4d of the -Apache License, Version 2.0, in this case for Objenesis: + APPENDIX: How to apply the Apache License to your work. -Objenesis -Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + Copyright [yyyy] [name of copyright owner] -=============================================================================== + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -To the extent any open source components are licensed under the EPL and/or -other similar licenses that require the source code and/or modifications to -source code to be made available (as would be noted above), you may obtain a -copy of the source code corresponding to the binaries for such open source -components and modifications thereto, if any, (the "Source Files"), by -downloading the Source Files from https://spring.io/projects, Pivotal's website -at https://network.pivotal.io/open-source, or by sending a request, with your -name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San -Francisco, CA 94103, Attention: General Counsel. All such requests should -clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal -can mail a copy of the Source Files to you on a CD or equivalent physical -medium. + http://www.apache.org/licenses/LICENSE-2.0 -This offer to obtain a copy of the Source Files is valid for three years from -the date you acquired this Software product. Alternatively, the Source Files -may accompany the Software. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Spring Framework 5.3.28 -Copyright (c) 2002-2023 Pivotal, Inc. - -This product is licensed to you under the Apache License, Version 2.0 -(the "License"). You may not use this product except in compliance with -the License. - -This product may include a number of subcomponents with separate -copyright notices and license terms. Your use of the source code for -these subcomponents is subject to the terms and conditions of the -subcomponent's license, as noted in the license.txt file. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -534. Group: org.springframework Name: spring-beans Version: 5.3.28 +540. Group: software.amazon.awssdk Name: protocol-core Version: 2.25.11 -POM Project URL: https://github.com/spring-projects/spring-framework +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 - https://www.apache.org/licenses/ + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -86854,7 +80236,7 @@ Embedded license: you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -86862,123 +80244,53 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -======================================================================= - -SPRING FRAMEWORK 5.3.28 SUBCOMPONENTS: - -Spring Framework 5.3.28 includes a number of subcomponents -with separate copyright notices and license terms. The product that -includes this file does not necessarily use all the open source -subcomponents referred to below. Your use of the source -code for these subcomponents is subject to the terms and -conditions of the following licenses. - - ->>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): - -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (c) 1999-2009, OW2 Consortium - - ->>> CGLIB 3.3 (cglib:cglib:3.3): - -Per the LICENSE file in the CGLIB JAR distribution downloaded from -https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, -CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which -is included above. - - ->>> Objenesis 3.2 (org.objenesis:objenesis:3.2): - -Per the LICENSE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html, Objenesis 3.2 is licensed under the -Apache License, version 2.0, the text of which is included above. - -Per the NOTICE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html and corresponding to section 4d of the -Apache License, Version 2.0, in this case for Objenesis: - -Objenesis -Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita - - -=============================================================================== - -To the extent any open source components are licensed under the EPL and/or -other similar licenses that require the source code and/or modifications to -source code to be made available (as would be noted above), you may obtain a -copy of the source code corresponding to the binaries for such open source -components and modifications thereto, if any, (the "Source Files"), by -downloading the Source Files from https://spring.io/projects, Pivotal's website -at https://network.pivotal.io/open-source, or by sending a request, with your -name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San -Francisco, CA 94103, Attention: General Counsel. All such requests should -clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal -can mail a copy of the Source Files to you on a CD or equivalent physical -medium. - -This offer to obtain a copy of the Source Files is valid for three years from -the date you acquired this Software product. Alternatively, the Source Files -may accompany the Software. - + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Spring Framework 5.3.28 -Copyright (c) 2002-2023 Pivotal, Inc. - -This product is licensed to you under the Apache License, Version 2.0 -(the "License"). You may not use this product except in compliance with -the License. - -This product may include a number of subcomponents with separate -copyright notices and license terms. Your use of the source code for -these subcomponents is subject to the terms and conditions of the -subcomponent's license, as noted in the license.txt file. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -535. Group: org.springframework Name: spring-context Version: 5.3.28 +541. Group: software.amazon.awssdk Name: protocol-core Version: 2.28.20 -POM Project URL: https://github.com/spring-projects/spring-framework +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 - https://www.apache.org/licenses/ + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -87170,7 +80482,7 @@ Embedded license: you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -87178,123 +80490,53 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -======================================================================= - -SPRING FRAMEWORK 5.3.28 SUBCOMPONENTS: - -Spring Framework 5.3.28 includes a number of subcomponents -with separate copyright notices and license terms. The product that -includes this file does not necessarily use all the open source -subcomponents referred to below. Your use of the source -code for these subcomponents is subject to the terms and -conditions of the following licenses. - - ->>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): - -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (c) 1999-2009, OW2 Consortium - - ->>> CGLIB 3.3 (cglib:cglib:3.3): - -Per the LICENSE file in the CGLIB JAR distribution downloaded from -https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, -CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which -is included above. - - ->>> Objenesis 3.2 (org.objenesis:objenesis:3.2): - -Per the LICENSE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html, Objenesis 3.2 is licensed under the -Apache License, version 2.0, the text of which is included above. - -Per the NOTICE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html and corresponding to section 4d of the -Apache License, Version 2.0, in this case for Objenesis: - -Objenesis -Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita - - -=============================================================================== - -To the extent any open source components are licensed under the EPL and/or -other similar licenses that require the source code and/or modifications to -source code to be made available (as would be noted above), you may obtain a -copy of the source code corresponding to the binaries for such open source -components and modifications thereto, if any, (the "Source Files"), by -downloading the Source Files from https://spring.io/projects, Pivotal's website -at https://network.pivotal.io/open-source, or by sending a request, with your -name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San -Francisco, CA 94103, Attention: General Counsel. All such requests should -clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal -can mail a copy of the Source Files to you on a CD or equivalent physical -medium. - -This offer to obtain a copy of the Source Files is valid for three years from -the date you acquired this Software product. Alternatively, the Source Files -may accompany the Software. - + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Spring Framework 5.3.28 -Copyright (c) 2002-2023 Pivotal, Inc. - -This product is licensed to you under the Apache License, Version 2.0 -(the "License"). You may not use this product except in compliance with -the License. - -This product may include a number of subcomponents with separate -copyright notices and license terms. Your use of the source code for -these subcomponents is subject to the terms and conditions of the -subcomponent's license, as noted in the license.txt file. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -536. Group: org.springframework Name: spring-core Version: 5.3.28 +542. Group: software.amazon.awssdk Name: rds Version: 2.21.23 -POM Project URL: https://github.com/spring-projects/spring-framework +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 - https://www.apache.org/licenses/ + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -87486,7 +80728,7 @@ Embedded license: you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -87494,123 +80736,53 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -======================================================================= - -SPRING FRAMEWORK 5.3.28 SUBCOMPONENTS: - -Spring Framework 5.3.28 includes a number of subcomponents -with separate copyright notices and license terms. The product that -includes this file does not necessarily use all the open source -subcomponents referred to below. Your use of the source -code for these subcomponents is subject to the terms and -conditions of the following licenses. - - ->>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): - -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (c) 1999-2009, OW2 Consortium - - ->>> CGLIB 3.3 (cglib:cglib:3.3): - -Per the LICENSE file in the CGLIB JAR distribution downloaded from -https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, -CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which -is included above. - - ->>> Objenesis 3.2 (org.objenesis:objenesis:3.2): - -Per the LICENSE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html, Objenesis 3.2 is licensed under the -Apache License, version 2.0, the text of which is included above. - -Per the NOTICE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html and corresponding to section 4d of the -Apache License, Version 2.0, in this case for Objenesis: - -Objenesis -Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita - - -=============================================================================== - -To the extent any open source components are licensed under the EPL and/or -other similar licenses that require the source code and/or modifications to -source code to be made available (as would be noted above), you may obtain a -copy of the source code corresponding to the binaries for such open source -components and modifications thereto, if any, (the "Source Files"), by -downloading the Source Files from https://spring.io/projects, Pivotal's website -at https://network.pivotal.io/open-source, or by sending a request, with your -name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San -Francisco, CA 94103, Attention: General Counsel. All such requests should -clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal -can mail a copy of the Source Files to you on a CD or equivalent physical -medium. - -This offer to obtain a copy of the Source Files is valid for three years from -the date you acquired this Software product. Alternatively, the Source Files -may accompany the Software. - + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Spring Framework 5.3.28 -Copyright (c) 2002-2023 Pivotal, Inc. - -This product is licensed to you under the Apache License, Version 2.0 -(the "License"). You may not use this product except in compliance with -the License. - -This product may include a number of subcomponents with separate -copyright notices and license terms. Your use of the source code for -these subcomponents is subject to the terms and conditions of the -subcomponent's license, as noted in the license.txt file. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -537. Group: org.springframework Name: spring-expression Version: 5.3.28 +543. Group: software.amazon.awssdk Name: rds Version: 2.23.3 -POM Project URL: https://github.com/spring-projects/spring-framework +POM Project URL: https://aws.amazon.com/sdkforjava -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 - https://www.apache.org/licenses/ + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -87802,7 +80974,7 @@ Embedded license: you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -87810,123 +80982,51 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -======================================================================= - -SPRING FRAMEWORK 5.3.28 SUBCOMPONENTS: - -Spring Framework 5.3.28 includes a number of subcomponents -with separate copyright notices and license terms. The product that -includes this file does not necessarily use all the open source -subcomponents referred to below. Your use of the source -code for these subcomponents is subject to the terms and -conditions of the following licenses. - - ->>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): - -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (c) 1999-2009, OW2 Consortium - - ->>> CGLIB 3.3 (cglib:cglib:3.3): - -Per the LICENSE file in the CGLIB JAR distribution downloaded from -https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, -CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which -is included above. - - ->>> Objenesis 3.2 (org.objenesis:objenesis:3.2): - -Per the LICENSE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html, Objenesis 3.2 is licensed under the -Apache License, version 2.0, the text of which is included above. - -Per the NOTICE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html and corresponding to section 4d of the -Apache License, Version 2.0, in this case for Objenesis: - -Objenesis -Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita - - -=============================================================================== - -To the extent any open source components are licensed under the EPL and/or -other similar licenses that require the source code and/or modifications to -source code to be made available (as would be noted above), you may obtain a -copy of the source code corresponding to the binaries for such open source -components and modifications thereto, if any, (the "Source Files"), by -downloading the Source Files from https://spring.io/projects, Pivotal's website -at https://network.pivotal.io/open-source, or by sending a request, with your -name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San -Francisco, CA 94103, Attention: General Counsel. All such requests should -clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal -can mail a copy of the Source Files to you on a CD or equivalent physical -medium. - -This offer to obtain a copy of the Source Files is valid for three years from -the date you acquired this Software product. Alternatively, the Source Files -may accompany the Software. - + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -Spring Framework 5.3.28 -Copyright (c) 2002-2023 Pivotal, Inc. - -This product is licensed to you under the Apache License, Version 2.0 -(the "License"). You may not use this product except in compliance with -the License. - -This product may include a number of subcomponents with separate -copyright notices and license terms. Your use of the source code for -these subcomponents is subject to the terms and conditions of the -subcomponent's license, as noted in the license.txt file. +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -538. Group: org.springframework Name: spring-jcl Version: 5.3.28 +544. Group: software.amazon.awssdk Name: regions Version: 2.21.23 -POM Project URL: https://github.com/spring-projects/spring-framework - -POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 +POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 Embedded license: **************************************** + Apache License Version 2.0, January 2004 - https://www.apache.org/licenses/ + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -88118,7 +81218,7 @@ Embedded license: you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -88126,136 +81226,40 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -======================================================================= - -SPRING FRAMEWORK 5.3.28 SUBCOMPONENTS: - -Spring Framework 5.3.28 includes a number of subcomponents -with separate copyright notices and license terms. The product that -includes this file does not necessarily use all the open source -subcomponents referred to below. Your use of the source -code for these subcomponents is subject to the terms and -conditions of the following licenses. - - ->>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): - -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (c) 1999-2009, OW2 Consortium - - ->>> CGLIB 3.3 (cglib:cglib:3.3): - -Per the LICENSE file in the CGLIB JAR distribution downloaded from -https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, -CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which -is included above. - - ->>> Objenesis 3.2 (org.objenesis:objenesis:3.2): - -Per the LICENSE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html, Objenesis 3.2 is licensed under the -Apache License, version 2.0, the text of which is included above. - -Per the NOTICE file in the Objenesis ZIP distribution downloaded from -http://objenesis.org/download.html and corresponding to section 4d of the -Apache License, Version 2.0, in this case for Objenesis: - -Objenesis -Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita - - -=============================================================================== - -To the extent any open source components are licensed under the EPL and/or -other similar licenses that require the source code and/or modifications to -source code to be made available (as would be noted above), you may obtain a -copy of the source code corresponding to the binaries for such open source -components and modifications thereto, if any, (the "Source Files"), by -downloading the Source Files from https://spring.io/projects, Pivotal's website -at https://network.pivotal.io/open-source, or by sending a request, with your -name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San -Francisco, CA 94103, Attention: General Counsel. All such requests should -clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal -can mail a copy of the Source Files to you on a CD or equivalent physical -medium. - -This offer to obtain a copy of the Source Files is valid for three years from -the date you acquired this Software product. Alternatively, the Source Files -may accompany the Software. - - **************************************** - -Spring Framework 5.3.28 -Copyright (c) 2002-2023 Pivotal, Inc. - -This product is licensed to you under the Apache License, Version 2.0 -(the "License"). You may not use this product except in compliance with -the License. - -This product may include a number of subcomponents with separate -copyright notices and license terms. Your use of the source code for -these subcomponents is subject to the terms and conditions of the -subcomponent's license, as noted in the license.txt file. - --------------------------------------------------------------------------------- - -539. Group: org.xerial.snappy Name: snappy-java Version: 1.1.10.5 - -Manifest Project URL: http://www.xerial.org/ - -POM Project URL: https://github.com/xerial/snappy-java - -POM License: Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.html - -Embedded license: - + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -This folder contains the native libraries built for various platforms. --------------------------------------------------------------------------------- - -540. Group: org.yaml Name: snakeyaml Version: 2.1 - -POM Project URL: https://bitbucket.org/snakeyaml/snakeyaml - -POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). -------------------------------------------------------------------------------- -541. Group: software.amazon.awssdk Name: acm Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +545. Group: software.amazon.awssdk Name: regions Version: 2.23.3 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -88499,7 +81503,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -542. Group: software.amazon.awssdk Name: annotations Version: 2.21.23 +546. Group: software.amazon.awssdk Name: regions Version: 2.25.11 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -88743,7 +81747,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -543. Group: software.amazon.awssdk Name: apache-client Version: 2.21.23 +547. Group: software.amazon.awssdk Name: regions Version: 2.28.20 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -88987,9 +81991,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -544. Group: software.amazon.awssdk Name: arns Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +548. Group: software.amazon.awssdk Name: retries Version: 2.28.20 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -89233,9 +82235,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -545. Group: software.amazon.awssdk Name: auth Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +549. Group: software.amazon.awssdk Name: retries-spi Version: 2.28.20 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -89479,7 +82479,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -546. Group: software.amazon.awssdk Name: aws-core Version: 2.21.23 +550. Group: software.amazon.awssdk Name: s3 Version: 2.21.23 POM Project URL: https://aws.amazon.com/sdkforjava @@ -89725,7 +82725,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -547. Group: software.amazon.awssdk Name: aws-json-protocol Version: 2.21.23 +551. Group: software.amazon.awssdk Name: s3 Version: 2.23.3 POM Project URL: https://aws.amazon.com/sdkforjava @@ -89971,7 +82971,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -548. Group: software.amazon.awssdk Name: aws-query-protocol Version: 2.21.23 +552. Group: software.amazon.awssdk Name: sdk-core Version: 2.21.23 POM Project URL: https://aws.amazon.com/sdkforjava @@ -90217,7 +83217,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -549. Group: software.amazon.awssdk Name: aws-xml-protocol Version: 2.21.23 +553. Group: software.amazon.awssdk Name: sdk-core Version: 2.23.3 POM Project URL: https://aws.amazon.com/sdkforjava @@ -90463,7 +83463,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -550. Group: software.amazon.awssdk Name: checksums Version: 2.21.23 +554. Group: software.amazon.awssdk Name: sdk-core Version: 2.25.11 POM Project URL: https://aws.amazon.com/sdkforjava @@ -90709,7 +83709,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -551. Group: software.amazon.awssdk Name: checksums-spi Version: 2.21.23 +555. Group: software.amazon.awssdk Name: sdk-core Version: 2.28.20 POM Project URL: https://aws.amazon.com/sdkforjava @@ -90955,7 +83955,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -552. Group: software.amazon.awssdk Name: cloudwatch Version: 2.21.23 +556. Group: software.amazon.awssdk Name: secretsmanager Version: 2.21.23 POM Project URL: https://aws.amazon.com/sdkforjava @@ -91201,7 +84201,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -553. Group: software.amazon.awssdk Name: crt-core Version: 2.21.23 +557. Group: software.amazon.awssdk Name: secretsmanager Version: 2.23.3 POM Project URL: https://aws.amazon.com/sdkforjava @@ -91447,7 +84447,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -554. Group: software.amazon.awssdk Name: dynamodb Version: 2.21.23 +558. Group: software.amazon.awssdk Name: securitylake Version: 2.28.20 POM Project URL: https://aws.amazon.com/sdkforjava @@ -91693,7 +84693,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -555. Group: software.amazon.awssdk Name: dynamodb-enhanced Version: 2.21.23 +559. Group: software.amazon.awssdk Name: servicediscovery Version: 2.21.23 POM Project URL: https://aws.amazon.com/sdkforjava @@ -91939,7 +84939,9 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -556. Group: software.amazon.awssdk Name: endpoints-spi Version: 2.21.23 +560. Group: software.amazon.awssdk Name: servicediscovery Version: 2.23.3 + +POM Project URL: https://aws.amazon.com/sdkforjava POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -92183,7 +85185,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -557. Group: software.amazon.awssdk Name: glue Version: 2.21.23 +561. Group: software.amazon.awssdk Name: sqs Version: 2.21.23 POM Project URL: https://aws.amazon.com/sdkforjava @@ -92429,7 +85431,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -558. Group: software.amazon.awssdk Name: http-auth Version: 2.21.23 +562. Group: software.amazon.awssdk Name: sqs Version: 2.23.3 POM Project URL: https://aws.amazon.com/sdkforjava @@ -92675,7 +85677,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -559. Group: software.amazon.awssdk Name: http-auth-aws Version: 2.21.23 +563. Group: software.amazon.awssdk Name: sso Version: 2.23.3 POM Project URL: https://aws.amazon.com/sdkforjava @@ -92921,7 +85923,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -560. Group: software.amazon.awssdk Name: http-auth-spi Version: 2.21.23 +564. Group: software.amazon.awssdk Name: ssooidc Version: 2.23.3 POM Project URL: https://aws.amazon.com/sdkforjava @@ -93167,251 +86169,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -561. Group: software.amazon.awssdk Name: http-client-spi Version: 2.21.23 - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - Note: Other license terms may apply to certain, identified software files contained within or distributed - with the accompanying software if such terms are included in the directory containing the accompanying software. - Such other license terms will then apply in lieu of the terms of the software license above. - **************************************** - -AWS SDK for Java 2.0 -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed by -Amazon Technologies, Inc (http://www.amazon.com/). - -********************** -THIRD PARTY COMPONENTS -********************** -This software includes third party software subject to the following copyrights: -- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. -- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. -- Apache Commons Lang - https://github.com/apache/commons-lang -- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams -- Jackson-core - https://github.com/FasterXML/jackson-core -- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary - -The licenses for these third party components are included in LICENSE.txt - -- For Apache Commons Lang see also this required NOTICE: - Apache Commons Lang - Copyright 2001-2020 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -562. Group: software.amazon.awssdk Name: identity-spi Version: 2.21.23 +565. Group: software.amazon.awssdk Name: sts Version: 2.21.23 POM Project URL: https://aws.amazon.com/sdkforjava @@ -93657,7 +86415,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -563. Group: software.amazon.awssdk Name: json-utils Version: 2.21.23 +566. Group: software.amazon.awssdk Name: sts Version: 2.22.12 POM Project URL: https://aws.amazon.com/sdkforjava @@ -93903,7 +86661,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -564. Group: software.amazon.awssdk Name: kafka Version: 2.21.23 +567. Group: software.amazon.awssdk Name: sts Version: 2.23.3 POM Project URL: https://aws.amazon.com/sdkforjava @@ -94149,7 +86907,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -565. Group: software.amazon.awssdk Name: kms Version: 2.21.23 +568. Group: software.amazon.awssdk Name: third-party-jackson-core Version: 2.21.23 POM Project URL: https://aws.amazon.com/sdkforjava @@ -94362,45 +87120,6 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - Note: Other license terms may apply to certain, identified software files contained within or distributed - with the accompanying software if such terms are included in the directory containing the accompanying software. - Such other license terms will then apply in lieu of the terms of the software license above. - **************************************** - -AWS SDK for Java 2.0 -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed by -Amazon Technologies, Inc (http://www.amazon.com/). - -********************** -THIRD PARTY COMPONENTS -********************** -This software includes third party software subject to the following copyrights: -- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. -- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. -- Apache Commons Lang - https://github.com/apache/commons-lang -- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams -- Jackson-core - https://github.com/FasterXML/jackson-core -- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary - -The licenses for these third party components are included in LICENSE.txt - -- For Apache Commons Lang see also this required NOTICE: - Apache Commons Lang - Copyright 2001-2020 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -566. Group: software.amazon.awssdk Name: metrics-spi Version: 2.21.23 - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - -Embedded license: - **************************************** @@ -94611,6 +87330,41 @@ Embedded license: Such other license terms will then apply in lieu of the terms of the software license above. **************************************** +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser . +That code is available under an MIT license +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. + + **************************************** + AWS SDK for Java 2.0 Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. @@ -94639,7 +87393,9 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -567. Group: software.amazon.awssdk Name: netty-nio-client Version: 2.21.23 +569. Group: software.amazon.awssdk Name: third-party-jackson-core Version: 2.23.3 + +POM Project URL: https://aws.amazon.com/sdkforjava POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -94850,47 +87606,6 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - Note: Other license terms may apply to certain, identified software files contained within or distributed - with the accompanying software if such terms are included in the directory containing the accompanying software. - Such other license terms will then apply in lieu of the terms of the software license above. - **************************************** - -AWS SDK for Java 2.0 -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed by -Amazon Technologies, Inc (http://www.amazon.com/). - -********************** -THIRD PARTY COMPONENTS -********************** -This software includes third party software subject to the following copyrights: -- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. -- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. -- Apache Commons Lang - https://github.com/apache/commons-lang -- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams -- Jackson-core - https://github.com/FasterXML/jackson-core -- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary - -The licenses for these third party components are included in LICENSE.txt - -- For Apache Commons Lang see also this required NOTICE: - Apache Commons Lang - Copyright 2001-2020 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -568. Group: software.amazon.awssdk Name: opensearchserverless Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - -Embedded license: - **************************************** @@ -95101,6 +87816,41 @@ Embedded license: Such other license terms will then apply in lieu of the terms of the software license above. **************************************** +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser . +That code is available under an MIT license +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. + + **************************************** + AWS SDK for Java 2.0 Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. @@ -95129,7 +87879,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -569. Group: software.amazon.awssdk Name: profiles Version: 2.21.23 +570. Group: software.amazon.awssdk Name: third-party-jackson-core Version: 2.25.11 POM Project URL: https://aws.amazon.com/sdkforjava @@ -95342,47 +88092,6 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - Note: Other license terms may apply to certain, identified software files contained within or distributed - with the accompanying software if such terms are included in the directory containing the accompanying software. - Such other license terms will then apply in lieu of the terms of the software license above. - **************************************** - -AWS SDK for Java 2.0 -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed by -Amazon Technologies, Inc (http://www.amazon.com/). - -********************** -THIRD PARTY COMPONENTS -********************** -This software includes third party software subject to the following copyrights: -- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. -- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. -- Apache Commons Lang - https://github.com/apache/commons-lang -- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams -- Jackson-core - https://github.com/FasterXML/jackson-core -- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary - -The licenses for these third party components are included in LICENSE.txt - -- For Apache Commons Lang see also this required NOTICE: - Apache Commons Lang - Copyright 2001-2020 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -570. Group: software.amazon.awssdk Name: protocol-core Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - -Embedded license: - **************************************** @@ -95593,6 +88302,41 @@ Embedded license: Such other license terms will then apply in lieu of the terms of the software license above. **************************************** +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser . +That code is available under an MIT license +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. + + **************************************** + AWS SDK for Java 2.0 Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. @@ -95621,7 +88365,9 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -571. Group: software.amazon.awssdk Name: regions Version: 2.21.23 +571. Group: software.amazon.awssdk Name: third-party-jackson-core Version: 2.28.20 + +POM Project URL: https://aws.amazon.com/sdkforjava POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -95832,47 +88578,6 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. - Note: Other license terms may apply to certain, identified software files contained within or distributed - with the accompanying software if such terms are included in the directory containing the accompanying software. - Such other license terms will then apply in lieu of the terms of the software license above. - **************************************** - -AWS SDK for Java 2.0 -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed by -Amazon Technologies, Inc (http://www.amazon.com/). - -********************** -THIRD PARTY COMPONENTS -********************** -This software includes third party software subject to the following copyrights: -- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. -- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. -- Apache Commons Lang - https://github.com/apache/commons-lang -- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams -- Jackson-core - https://github.com/FasterXML/jackson-core -- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary - -The licenses for these third party components are included in LICENSE.txt - -- For Apache Commons Lang see also this required NOTICE: - Apache Commons Lang - Copyright 2001-2020 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -572. Group: software.amazon.awssdk Name: s3 Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - -Embedded license: - **************************************** @@ -96083,6 +88788,41 @@ Embedded license: Such other license terms will then apply in lieu of the terms of the software license above. **************************************** +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser . +That code is available under an MIT license +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. + + **************************************** + AWS SDK for Java 2.0 Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. @@ -96111,7 +88851,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -573. Group: software.amazon.awssdk Name: sdk-core Version: 2.21.23 +572. Group: software.amazon.awssdk Name: third-party-jackson-dataformat-cbor Version: 2.25.11 POM Project URL: https://aws.amazon.com/sdkforjava @@ -96121,6 +88861,17 @@ Embedded license: **************************************** +This copy of Jackson JSON processor CBOR module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 + + **************************************** + Apache License Version 2.0, January 2004 @@ -96329,250 +89080,28 @@ Embedded license: Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -AWS SDK for Java 2.0 -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed by -Amazon Technologies, Inc (http://www.amazon.com/). - -********************** -THIRD PARTY COMPONENTS -********************** -This software includes third party software subject to the following copyrights: -- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. -- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. -- Apache Commons Lang - https://github.com/apache/commons-lang -- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams -- Jackson-core - https://github.com/FasterXML/jackson-core -- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary - -The licenses for these third party components are included in LICENSE.txt - -- For Apache Commons Lang see also this required NOTICE: - Apache Commons Lang - Copyright 2001-2020 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (https://www.apache.org/). - --------------------------------------------------------------------------------- - -574. Group: software.amazon.awssdk Name: secretsmanager Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava - -POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 - -Embedded license: - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +# Jackson JSON processor - END OF TERMS AND CONDITIONS +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. - APPENDIX: How to apply the Apache License to your work. +## Copyright - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - Copyright [yyyy] [name of copyright owner] +## Licensing - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. - http://www.apache.org/licenses/LICENSE-2.0 +## Credits - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. - Note: Other license terms may apply to certain, identified software files contained within or distributed - with the accompanying software if such terms are included in the directory containing the accompanying software. - Such other license terms will then apply in lieu of the terms of the software license above. **************************************** AWS SDK for Java 2.0 @@ -96603,9 +89132,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -575. Group: software.amazon.awssdk Name: servicediscovery Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +573. Group: software.amazon.awssdk Name: url-connection-client Version: 2.21.23 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -96849,9 +89376,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -576. Group: software.amazon.awssdk Name: sqs Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +574. Group: software.amazon.awssdk Name: url-connection-client Version: 2.22.12 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -97095,9 +89620,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -577. Group: software.amazon.awssdk Name: sso Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +575. Group: software.amazon.awssdk Name: url-connection-client Version: 2.23.3 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -97341,9 +89864,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -578. Group: software.amazon.awssdk Name: sts Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +576. Group: software.amazon.awssdk Name: utils Version: 2.21.23 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -97587,9 +90108,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -579. Group: software.amazon.awssdk Name: third-party-jackson-core Version: 2.21.23 - -POM Project URL: https://aws.amazon.com/sdkforjava +577. Group: software.amazon.awssdk Name: utils Version: 2.23.3 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -97788,211 +90307,6 @@ Embedded license: Copyright [yyyy] [name of copyright owner] - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - **************************************** - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -98010,41 +90324,6 @@ Embedded license: Such other license terms will then apply in lieu of the terms of the software license above. **************************************** -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers. - -## Copyright - -Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) - -## Licensing - -Jackson 2.x core and extension components are licensed under Apache License 2.0 -To find the details that apply to this artifact see the accompanying LICENSE file. - -## Credits - -A list of contributors may be found from CREDITS(-2.x) file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. - -## FastDoubleParser - -jackson-core bundles a shaded copy of FastDoubleParser . -That code is available under an MIT license -under the following copyright. - -Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. - -See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser -and the licenses and copyrights that apply to that code. - - **************************************** - AWS SDK for Java 2.0 Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. @@ -98073,7 +90352,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -580. Group: software.amazon.awssdk Name: url-connection-client Version: 2.21.23 +578. Group: software.amazon.awssdk Name: utils Version: 2.25.11 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -98317,7 +90596,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -581. Group: software.amazon.awssdk Name: utils Version: 2.21.23 +579. Group: software.amazon.awssdk Name: utils Version: 2.28.20 POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 @@ -98561,7 +90840,7 @@ The licenses for these third party components are included in LICENSE.txt -------------------------------------------------------------------------------- -582. Group: software.amazon.cloudwatchlogs Name: aws-embedded-metrics Version: 2.0.0-beta-1 +580. Group: software.amazon.cloudwatchlogs Name: aws-embedded-metrics Version: 2.0.0-beta-1 POM Project URL: https://github.com/awslabs/aws-embedded-metrics-java @@ -98569,7 +90848,7 @@ POM License: The Apache License, Version 2.0 - https://github.com/awslabs/aws-em -------------------------------------------------------------------------------- -583. Group: software.amazon.eventstream Name: eventstream Version: 1.0.1 +581. Group: software.amazon.eventstream Name: eventstream Version: 1.0.1 POM Project URL: https://github.com/awslabs/aws-eventstream-java @@ -98577,7 +90856,7 @@ POM License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0 -------------------------------------------------------------------------------- -584. Group: software.amazon.glue Name: schema-registry-build-tools Version: 1.1.15 +582. Group: software.amazon.glue Name: schema-registry-build-tools Version: 1.1.18 POM Project URL: https://aws.amazon.com/glue @@ -98585,7 +90864,7 @@ POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENS -------------------------------------------------------------------------------- -585. Group: software.amazon.glue Name: schema-registry-common Version: 1.1.15 +583. Group: software.amazon.glue Name: schema-registry-build-tools Version: 1.1.19 POM Project URL: https://aws.amazon.com/glue @@ -98593,7 +90872,7 @@ POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENS -------------------------------------------------------------------------------- -586. Group: software.amazon.glue Name: schema-registry-serde Version: 1.1.15 +584. Group: software.amazon.glue Name: schema-registry-common Version: 1.1.18 POM Project URL: https://aws.amazon.com/glue @@ -98601,15 +90880,39 @@ POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENS -------------------------------------------------------------------------------- -587. Group: software.amazon.ion Name: ion-java Version: 1.0.2 +585. Group: software.amazon.glue Name: schema-registry-common Version: 1.1.19 -POM Project URL: https://github.com/amznlabs/ion-java/ +POM Project URL: https://aws.amazon.com/glue -POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +586. Group: software.amazon.glue Name: schema-registry-serde Version: 1.1.18 + +POM Project URL: https://aws.amazon.com/glue + +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +587. Group: software.amazon.glue Name: schema-registry-serde Version: 1.1.19 + +POM Project URL: https://aws.amazon.com/glue + +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + +-------------------------------------------------------------------------------- + +588. Group: software.amazon.kinesis Name: amazon-kinesis-client Version: 2.6.0 + +POM Project URL: https://aws.amazon.com/kinesis + +POM License: Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -588. Group: software.amazon.msk Name: aws-msk-iam-auth Version: 1.1.6 +589. Group: software.amazon.msk Name: aws-msk-iam-auth Version: 2.0.3 POM Project URL: https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html @@ -98617,36 +90920,36 @@ POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LI -------------------------------------------------------------------------------- -589. Group: software.amazon.randomcutforest Name: randomcutforest-core Version: 3.8.0 +590. Group: software.amazon.randomcutforest Name: randomcutforest-core Version: 3.8.0 POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -590. Group: software.amazon.randomcutforest Name: randomcutforest-examples Version: 3.8.0 +591. Group: software.amazon.randomcutforest Name: randomcutforest-examples Version: 3.8.0 POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -591. Group: software.amazon.randomcutforest Name: randomcutforest-parkservices Version: 3.8.0 +592. Group: software.amazon.randomcutforest Name: randomcutforest-parkservices Version: 3.8.0 POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -592. Group: software.amazon.randomcutforest Name: randomcutforest-serialization-json Version: 1.0 +593. Group: software.amazon.randomcutforest Name: randomcutforest-serialization-json Version: 1.0 POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -593. Group: software.amazon.randomcutforest Name: randomcutforest-testutils Version: 3.8.0 +594. Group: software.amazon.randomcutforest Name: randomcutforest-testutils Version: 3.8.0 POM License: The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- -This report was generated at Mon Nov 27 19:17:34 UTC 2023. +This report was generated at Tue Oct 15 16:09:44 UTC 2024. diff --git a/build.gradle b/build.gradle index 0efa56a43b..7f78c2424f 100644 --- a/build.gradle +++ b/build.gradle @@ -245,6 +245,10 @@ subprojects { javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.current() } + testLogging { + exceptionFormat "full" + showStackTraces false + } reports { junitXml.required html.required @@ -265,7 +269,7 @@ subprojects { configure(subprojects.findAll {it.name != 'data-prepper-api'}) { dependencies { - implementation platform('software.amazon.awssdk:bom:2.21.23') + implementation platform('software.amazon.awssdk:bom:2.25.11') implementation 'jakarta.validation:jakarta.validation-api:3.0.2' } } diff --git a/data-prepper-api/build.gradle b/data-prepper-api/build.gradle index 045d331704..bf0f0aebd6 100644 --- a/data-prepper-api/build.gradle +++ b/data-prepper-api/build.gradle @@ -13,8 +13,8 @@ dependencies { implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8' implementation libs.parquet.common - testImplementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' implementation libs.commons.lang3 + testImplementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' testImplementation project(':data-prepper-test-common') testImplementation 'org.skyscreamer:jsonassert:1.5.3' testImplementation libs.commons.io diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/logging/DataPrepperMarkers.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/logging/DataPrepperMarkers.java index 94cf06979e..a15dd52480 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/logging/DataPrepperMarkers.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/logging/DataPrepperMarkers.java @@ -6,6 +6,7 @@ public final class DataPrepperMarkers { public static final Marker EVENT = MarkerFactory.getMarker("EVENT"); public static final Marker SENSITIVE = MarkerFactory.getMarker("SENSITIVE"); + public static final Marker NOISY = MarkerFactory.getMarker("NOISY"); static { EVENT.add(SENSITIVE); diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/acknowledgements/AcknowledgementSet.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/acknowledgements/AcknowledgementSet.java index efd36e123d..6093ce9c6b 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/acknowledgements/AcknowledgementSet.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/acknowledgements/AcknowledgementSet.java @@ -21,6 +21,14 @@ * dropped, etc) */ public interface AcknowledgementSet { + /** + * Adds an event handle to the acknowledgement set. Assigns initial reference + * count of 1. + * + * @param eventHandle event handle to be added + * @since 2.11 + */ + void add(EventHandle eventHandle); /** * Adds an event to the acknowledgement set. Assigns initial reference @@ -29,7 +37,9 @@ public interface AcknowledgementSet { * @param event event to be added * @since 2.2 */ - public void add(Event event); + default void add(Event event) { + add(event.getEventHandle()); + } /** * Aquires a reference to the event by incrementing the reference diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/AlsoRequired.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/AlsoRequired.java new file mode 100644 index 0000000000..ae4275a3cc --- /dev/null +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/AlsoRequired.java @@ -0,0 +1,36 @@ +package org.opensearch.dataprepper.model.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Annotation used in schema generation to define the names and corresponding values of other required + * configurations if the configuration represented by the annotated field/method takes non-null or true value. + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.METHOD}) +public @interface AlsoRequired { + /** + * Array of Required annotations, each representing a required property with its allowed values. + */ + Required[] values(); + + /** + * Annotation to represent a required property and its allowed values. + */ + @interface Required { + /** + * Name of the required property. + */ + String name(); + + /** + * Allowed values for the required property. The default value of {} means any non-null value is allowed. + */ + String[] allowedValues() default {}; + } +} diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/DataPrepperPlugin.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/DataPrepperPlugin.java index c9345385dc..7cfd29c1c9 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/DataPrepperPlugin.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/DataPrepperPlugin.java @@ -33,6 +33,8 @@ public @interface DataPrepperPlugin { String DEFAULT_DEPRECATED_NAME = ""; + String DEFAULT_ALTERNATE_NAME = ""; + /** * * @return Name of the plugin which should be unique for the type @@ -46,6 +48,12 @@ */ String deprecatedName() default DEFAULT_DEPRECATED_NAME; + /** + * + * @return Alternate name of the plugin which should be unique for the type + */ + String[] alternateNames() default {}; + /** * The class type for this plugin. * @@ -64,4 +72,16 @@ * @since 1.2 */ Class pluginConfigurationType() default PluginSetting.class; + + /** + * Optional Packages to scan for Data Prepper DI components. + * Plugins provide this list if they want to use Dependency Injection in its module. + * Providing this value, implicitly assumes and initiates plugin specific isolated ApplicationContext. + *

+ * The package names that spring context scans will be picked up by these marker classes. + * + * @return Array of classes to use for package scan. + * @since 2.2 + */ + Class[] packagesToScan() default {}; } diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/ExampleValues.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/ExampleValues.java new file mode 100644 index 0000000000..5ab7593cd3 --- /dev/null +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/ExampleValues.java @@ -0,0 +1,52 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.model.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * Use this annotation to provide example values for plugin configuration. + * + * @since 2.11 + */ +@Documented +@Retention(RUNTIME) +@Target({FIELD}) +public @interface ExampleValues { + /** + * One or more examples. + * @return the examples. + * @since 2.11 + */ + Example[] value(); + + /** + * A single example. + * + * @since 2.11 + */ + @interface Example { + /** + * The example value + * @return The example value + * + * @since 2.11 + */ + String value(); + + /** + * A description of the example value. + * + * @since 2.11 + */ + String description() default ""; + } +} diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/UsesDataPrepperPlugin.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/UsesDataPrepperPlugin.java new file mode 100644 index 0000000000..e94e2cca4c --- /dev/null +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/UsesDataPrepperPlugin.java @@ -0,0 +1,23 @@ +package org.opensearch.dataprepper.model.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Annotates a field that uses Data Prepper plugin config as its value. + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +public @interface UsesDataPrepperPlugin { + /** + * The class type for this plugin. + * + * @return The Java class + * @since 1.2 + */ + Class pluginType(); +} diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/codec/JsonDecoder.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/codec/JsonDecoder.java index f0793aa65f..b837d36064 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/codec/JsonDecoder.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/codec/JsonDecoder.java @@ -17,6 +17,8 @@ import java.io.IOException; import java.io.InputStream; import java.time.Instant; +import java.util.Collection; +import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.function.Consumer; @@ -24,6 +26,21 @@ public class JsonDecoder implements ByteDecoder { private final ObjectMapper objectMapper = new ObjectMapper(); private final JsonFactory jsonFactory = new JsonFactory(); + private String keyName; + private Collection includeKeys; + private Collection includeKeysMetadata; + + public JsonDecoder(String keyName, Collection includeKeys, Collection includeKeysMetadata) { + this.keyName = keyName; + this.includeKeys = includeKeys; + this.includeKeysMetadata = includeKeysMetadata; + } + + public JsonDecoder() { + this.keyName = null; + this.includeKeys = null; + this.includeKeysMetadata = null; + } public void parse(InputStream inputStream, Instant timeReceived, Consumer> eventConsumer) throws IOException { Objects.requireNonNull(inputStream); @@ -31,18 +48,50 @@ public void parse(InputStream inputStream, Instant timeReceived, Consumer includeKeysMap = new HashMap<>(); + Map includeMetadataKeysMap = new HashMap<>(); while (!jsonParser.isClosed() && jsonParser.nextToken() != JsonToken.END_OBJECT) { + final String nodeName = jsonParser.currentName(); + + if (includeKeys != null && includeKeys.contains(nodeName) || + (includeKeysMetadata != null && includeKeysMetadata.contains(nodeName))) { + jsonParser.nextToken(); + if (includeKeys != null && includeKeys.contains(nodeName)) { + includeKeysMap.put(nodeName, jsonParser.getValueAsString()); + } + if (includeKeysMetadata != null && includeKeysMetadata.contains(nodeName)) { + includeMetadataKeysMap.put(nodeName, jsonParser.getValueAsString()); + } + continue; + } + if (jsonParser.getCurrentToken() == JsonToken.START_ARRAY) { - parseRecordsArray(jsonParser, timeReceived, eventConsumer); + if (keyName != null && !nodeName.equals(keyName)) { + continue; + } + parseRecordsArray(jsonParser, timeReceived, eventConsumer, includeKeysMap, includeMetadataKeysMap); } } } - private void parseRecordsArray(final JsonParser jsonParser, final Instant timeReceived, final Consumer> eventConsumer) throws IOException { + private void parseRecordsArray(final JsonParser jsonParser, + final Instant timeReceived, + final Consumer> eventConsumer, + final Map includeKeysMap, + final Map includeMetadataKeysMap + ) throws IOException { while (jsonParser.nextToken() != JsonToken.END_ARRAY) { final Map innerJson = objectMapper.readValue(jsonParser, Map.class); final Record record = createRecord(innerJson, timeReceived); + for (final Map.Entry entry : includeKeysMap.entrySet()) { + record.getData().put(entry.getKey(), entry.getValue()); + } + + for (final Map.Entry entry : includeMetadataKeysMap.entrySet()) { + record.getData().getMetadata().setAttribute(entry.getKey(), entry.getValue()); + } + eventConsumer.accept(record); } } diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/ConditionalRoute.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/ConditionalRoute.java index 0055702169..23571989d5 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/ConditionalRoute.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/ConditionalRoute.java @@ -31,7 +31,7 @@ */ @JsonPropertyOrder @JsonClassDescription("The key-value pair defines routing condition, where the key is the name of a route and the " + - "value is a Data Prepper expression representing the routing condition.") + "value is an expression representing the routing condition.") @JsonSerialize(using = ConditionalRoute.ConditionalRouteSerializer.class) @JsonDeserialize(using = ConditionalRoute.ConditionalRouteDeserializer.class) public class ConditionalRoute { diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/DataPrepperVersion.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/DataPrepperVersion.java index f8e996f8d1..7bf0e90da6 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/DataPrepperVersion.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/DataPrepperVersion.java @@ -6,7 +6,7 @@ import java.util.regex.Pattern; public class DataPrepperVersion { - private static final String CURRENT_VERSION = "2.10"; + private static final String CURRENT_VERSION = "2.11"; private static final String FULL_FORMAT = "%d.%d"; private static final String SHORTHAND_FORMAT = "%d"; diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/AggregateEventHandle.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/AggregateEventHandle.java index 921d689a3c..511490ed5b 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/AggregateEventHandle.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/AggregateEventHandle.java @@ -68,6 +68,18 @@ public boolean release(boolean result) { return returnValue; } + @Override + public void addEventHandle(EventHandle eventHandle) { + synchronized (this) { + for (WeakReference acknowledgementSetRef : acknowledgementSetRefList) { + AcknowledgementSet acknowledgementSet = acknowledgementSetRef.get(); + if (acknowledgementSet != null) { + acknowledgementSet.add(eventHandle); + } + } + } + } + // For testing List> getAcknowledgementSetRefs() { return acknowledgementSetRefList; diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DataType.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DataType.java index c6e899a6f4..9a35532996 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DataType.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DataType.java @@ -95,7 +95,7 @@ public String getTypeName() { } @JsonCreator - static DataType fromTypeName(final String option) { + public static DataType fromTypeName(final String option) { return TYPES_MAP.get(option); } diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DefaultEventHandle.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DefaultEventHandle.java index 340c104a14..2782fdfa7c 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DefaultEventHandle.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DefaultEventHandle.java @@ -37,6 +37,14 @@ public boolean hasAcknowledgementSet() { return acknowledgementSet != null; } + @Override + public void addEventHandle(EventHandle eventHandle) { + AcknowledgementSet acknowledgementSet = getAcknowledgementSet(); + if (acknowledgementSet != null) { + acknowledgementSet.add(eventHandle); + } + } + @Override public void acquireReference() { synchronized (this) { diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOption.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOption.java index 6c310eb395..8b5be2de4e 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOption.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOption.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper.model.event; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import java.util.Arrays; import java.util.Map; @@ -45,4 +46,9 @@ public boolean shouldLog() { static HandleFailedEventsOption fromOptionValue(final String option) { return OPTIONS_MAP.get(option.toLowerCase()); } + + @JsonValue + public String toOptionValue() { + return option; + } } diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/InternalEventHandle.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/InternalEventHandle.java index 3ee88f698b..a842033b01 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/InternalEventHandle.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/InternalEventHandle.java @@ -31,5 +31,12 @@ public interface InternalEventHandle { */ void acquireReference(); + /** + * Adds new event handle to the acknowledgement sets associated + * with this event handle + * @param eventHandle event handle to add + * @since 2.11 + */ + void addEventHandle(EventHandle eventHandle); } diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/types/ByteCount.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/types/ByteCount.java index e3037427f5..3ca0f2e40b 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/types/ByteCount.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/types/ByteCount.java @@ -79,11 +79,13 @@ public static ByteCount parse(final String string) { final String unitString = matcher.group("unit"); if(unitString == null) { - throw new ByteCountInvalidInputException("Byte counts must have a unit."); + throw new ByteCountInvalidInputException("Byte counts must have a unit. Valid byte units include: " + + Arrays.stream(Unit.values()).map(unitValue -> unitValue.unitString).collect(Collectors.toList())); } final Unit unit = Unit.fromString(unitString) - .orElseThrow(() -> new ByteCountInvalidInputException("Invalid byte unit: '" + unitString + "'")); + .orElseThrow(() -> new ByteCountInvalidInputException("Invalid byte unit: '" + unitString + "'. Valid byte units include: " + + Arrays.stream(Unit.values()).map(unitValue -> unitValue.unitString).collect(Collectors.toList()))); final BigDecimal valueBigDecimal = new BigDecimal(valueString); diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/acknowledgements/AcknowledgementSetTests.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/acknowledgements/AcknowledgementSetTests.java new file mode 100644 index 0000000000..d74ae9ceef --- /dev/null +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/acknowledgements/AcknowledgementSetTests.java @@ -0,0 +1,38 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.model.acknowledgements; + +import org.junit.jupiter.api.Test; + +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventHandle; +import org.junit.jupiter.api.BeforeEach; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.spy; + +public class AcknowledgementSetTests { + + Event event; + EventHandle eventHandle; + AcknowledgementSet acknowledgementSet; + + @BeforeEach + public void setup() { + event = mock(Event.class); + eventHandle = mock(EventHandle.class); + when(event.getEventHandle()).thenReturn(eventHandle); + acknowledgementSet = spy(AcknowledgementSet.class); + } + + @Test + public void testAcknowledgementSetAdd() { + acknowledgementSet.add(event); + verify(acknowledgementSet).add(eventHandle); + } +} + diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/codec/JsonDecoderTest.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/codec/JsonDecoderTest.java index d2c7287313..6ff6e6b936 100644 --- a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/codec/JsonDecoderTest.java +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/codec/JsonDecoderTest.java @@ -1,19 +1,30 @@ package org.opensearch.dataprepper.model.codec; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.DefaultEventHandle; import org.opensearch.dataprepper.model.record.Record; import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; import java.time.Instant; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.UUID; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; @@ -26,7 +37,7 @@ private JsonDecoder createObjectUnderTest() { return new JsonDecoder(); } -@BeforeEach + @BeforeEach void setup() { jsonDecoder = createObjectUnderTest(); receivedRecord = null; @@ -60,10 +71,10 @@ void test_basicJsonDecoder_withTimeReceived() { try { jsonDecoder.parse(new ByteArrayInputStream(inputString.getBytes()), now, (record) -> { receivedRecord = record; - receivedTime = ((DefaultEventHandle)(((Event)record.getData()).getEventHandle())).getInternalOriginationTime(); + receivedTime = record.getData().getEventHandle().getInternalOriginationTime(); }); } catch (Exception e){} - + assertNotEquals(receivedRecord, null); Map map = receivedRecord.getData().toMap(); assertThat(map.get("key1"), equalTo(stringValue)); @@ -71,4 +82,135 @@ void test_basicJsonDecoder_withTimeReceived() { assertThat(receivedTime, equalTo(now)); } + @Nested + class JsonDecoderWithInputConfig { + private ObjectMapper objectMapper; + private final List includeKeys = new ArrayList<>(); + private final List includeMetadataKeys = new ArrayList<>(); + private static final int numKeyRecords = 10; + private static final int numKeyPerRecord = 3; + private Map jsonObject; + private final String key_name = "logEvents"; + + @BeforeEach + void setup() { + objectMapper = new ObjectMapper(); + for (int i=0; i<10; i++) { + includeKeys.add(UUID.randomUUID().toString()); + includeMetadataKeys.add(UUID.randomUUID().toString()); + } + jsonObject = generateJsonWithSpecificKeys(includeKeys, includeMetadataKeys, key_name, numKeyRecords, numKeyPerRecord); + } + @Test + void test_basicJsonDecoder_withInputConfig() throws IOException { + final Instant now = Instant.now(); + List> records = new ArrayList<>(); + jsonDecoder = new JsonDecoder(key_name, includeKeys, includeMetadataKeys); + jsonDecoder.parse(createInputStream(jsonObject), now, (record) -> { + records.add(record); + receivedTime = record.getData().getEventHandle().getInternalOriginationTime(); + }); + + assertFalse(records.isEmpty()); + assertEquals(numKeyRecords, records.size()); + + records.forEach(record -> { + Map dataMap = record.getData().toMap(); + Map metadataMap = record.getData().getMetadata().getAttributes(); + + for (String includeKey: includeKeys) { + assertThat(dataMap.get(includeKey), equalTo(jsonObject.get(includeKey))); + } + for (String includeMetadataKey: includeMetadataKeys) { + assertThat(metadataMap.get(includeMetadataKey), equalTo(jsonObject.get(includeMetadataKey))); + } + }); + + assertThat(receivedTime, equalTo(now)); + } + + @Test + void test_basicJsonDecoder_withInputConfig_withoutEvents_empty_metadata_keys() throws IOException { + final Instant now = Instant.now(); + List> records = new ArrayList<>(); + jsonDecoder = new JsonDecoder("", includeKeys, Collections.emptyList()); + jsonDecoder.parse(createInputStream(jsonObject), now, (record) -> { + records.add(record); + receivedTime = record.getData().getEventHandle().getInternalOriginationTime(); + }); + assertTrue(records.isEmpty()); + } + + @Test + void test_basicJsonDecoder_withInputConfig_withoutEvents_null_include_metadata_keys() throws IOException { + final Instant now = Instant.now(); + List> records = new ArrayList<>(); + jsonDecoder = new JsonDecoder("", includeKeys, null); + jsonDecoder.parse(createInputStream(jsonObject), now, (record) -> { + records.add(record); + receivedTime = record.getData().getEventHandle().getInternalOriginationTime(); + }); + + assertTrue(records.isEmpty()); + } + + @Test + void test_basicJsonDecoder_withInputConfig_withoutEvents_empty_include_keys() throws IOException { + final Instant now = Instant.now(); + List> records = new ArrayList<>(); + jsonDecoder = new JsonDecoder("", Collections.emptyList(), includeMetadataKeys); + jsonDecoder.parse(createInputStream(jsonObject), now, (record) -> { + records.add(record); + receivedTime = record.getData().getEventHandle().getInternalOriginationTime(); + }); + assertTrue(records.isEmpty()); + } + + @Test + void test_basicJsonDecoder_withInputConfig_withoutEvents_null_include_keys() throws IOException { + final Instant now = Instant.now(); + List> records = new ArrayList<>(); + jsonDecoder = new JsonDecoder("", null, includeMetadataKeys); + jsonDecoder.parse(createInputStream(jsonObject), now, (record) -> { + records.add(record); + receivedTime = record.getData().getEventHandle().getInternalOriginationTime(); + }); + + assertTrue(records.isEmpty()); + } + + private Map generateJsonWithSpecificKeys(final List includeKeys, + final List includeMetadataKeys, + final String key, + final int numKeyRecords, + final int numKeyPerRecord) { + final Map jsonObject = new LinkedHashMap<>(); + final List> innerObjects = new ArrayList<>(); + + for (String includeKey: includeKeys) { + jsonObject.put(includeKey, UUID.randomUUID().toString()); + } + + for (String includeMetadataKey: includeMetadataKeys) { + jsonObject.put(includeMetadataKey, UUID.randomUUID().toString()); + } + + for (int i=0; i innerJsonMap = new LinkedHashMap<>(); + for (int j=0; j jsonRoot) throws JsonProcessingException { + final byte[] jsonBytes = objectMapper.writeValueAsBytes(jsonRoot); + + return new ByteArrayInputStream(jsonBytes); + } + } + } diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/AggregateEventHandleTests.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/AggregateEventHandleTests.java index 9998d6eb6d..c05739c940 100644 --- a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/AggregateEventHandleTests.java +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/AggregateEventHandleTests.java @@ -98,5 +98,18 @@ void testWithOnReleaseHandler() { } + @Test + void testAddEventHandle() { + Instant now = Instant.now(); + AggregateEventHandle eventHandle = new AggregateEventHandle(now); + acknowledgementSet1 = mock(AcknowledgementSet.class); + acknowledgementSet2 = mock(AcknowledgementSet.class); + eventHandle.addAcknowledgementSet(acknowledgementSet1); + eventHandle.addAcknowledgementSet(acknowledgementSet2); + AggregateEventHandle eventHandle2 = new AggregateEventHandle(now); + eventHandle.addEventHandle(eventHandle2); + verify(acknowledgementSet1).add(eventHandle2); + verify(acknowledgementSet2).add(eventHandle2); + } } diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DataTypeTest.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DataTypeTest.java index ac7a5bf613..ac6be94b7f 100644 --- a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DataTypeTest.java +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DataTypeTest.java @@ -6,14 +6,21 @@ package org.opensearch.dataprepper.model.event; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.EnumSource; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.emptyString; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.params.provider.Arguments.arguments; import java.math.BigDecimal; import java.util.ArrayList; @@ -39,26 +46,55 @@ void test_isSameType(Object object, String type, boolean expectedResult) { assertThat(DataType.isSameType(object, type), equalTo(expectedResult)); } + @ParameterizedTest + @EnumSource(DataType.class) + void getTypeName_returns_non_empty_string_for_all_types(final DataType dataType) { + assertThat(dataType.getTypeName(), notNullValue()); + assertThat(dataType.getTypeName(), not(emptyString())); + } + + @ParameterizedTest + @ArgumentsSource(DataTypeToKnownString.class) + void getTypeName_returns_expected_name(final DataType dataType, final String expectedString) { + assertThat(dataType.getTypeName(), equalTo(expectedString)); + } + private static Stream getSameTypeTestData() { int[] testArray = {1,2}; List testList = new ArrayList<>(); return Stream.of( - Arguments.of(2, "integer", true), - Arguments.of("testString", "string", true), - Arguments.of(2L, "long", true), - Arguments.of(2.0, "double", true), - Arguments.of(BigDecimal.valueOf(2.34567), "big_decimal", true), - Arguments.of(true, "boolean", true), - Arguments.of(Map.of("k","v"), "map", true), - Arguments.of(testArray, "array", true), - Arguments.of(testList, "array", true), - Arguments.of(2.0, "integer", false), - Arguments.of(2, "string", false), - Arguments.of("testString", "long", false), - Arguments.of("testString", "double", false), - Arguments.of(2, "boolean", false), - Arguments.of(2L, "map", false), - Arguments.of(2, "array", false) + arguments(2, "integer", true), + arguments("testString", "string", true), + arguments(2L, "long", true), + arguments(2.0, "double", true), + arguments(BigDecimal.valueOf(2.34567), "big_decimal", true), + arguments(true, "boolean", true), + arguments(Map.of("k","v"), "map", true), + arguments(testArray, "array", true), + arguments(testList, "array", true), + arguments(2.0, "integer", false), + arguments(2, "string", false), + arguments("testString", "long", false), + arguments("testString", "double", false), + arguments(2, "boolean", false), + arguments(2L, "map", false), + arguments(2, "array", false) ); } + + static class DataTypeToKnownString implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(DataType.STRING, "string"), + arguments(DataType.BOOLEAN, "boolean"), + arguments(DataType.INTEGER, "integer"), + arguments(DataType.LONG, "long"), + arguments(DataType.DOUBLE, "double"), + arguments(DataType.BIG_DECIMAL, "big_decimal"), + arguments(DataType.MAP, "map"), + arguments(DataType.ARRAY, "array") + ); + } + } } diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DefaultEventHandleTests.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DefaultEventHandleTests.java index f351febd11..df1d8d814d 100644 --- a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DefaultEventHandleTests.java +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DefaultEventHandleTests.java @@ -13,7 +13,6 @@ import static org.mockito.Mockito.when; import static org.mockito.Mockito.verify; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doNothing; import org.mockito.Mock; import java.time.Instant; @@ -39,7 +38,6 @@ void testBasic() { void testWithAcknowledgementSet() { acknowledgementSet = mock(AcknowledgementSet.class); when(acknowledgementSet.release(any(EventHandle.class), any(Boolean.class))).thenReturn(true); - doNothing().when(acknowledgementSet).acquire(any(EventHandle.class)); Instant now = Instant.now(); DefaultEventHandle eventHandle = new DefaultEventHandle(now); assertThat(eventHandle.getAcknowledgementSet(), equalTo(null)); @@ -75,5 +73,16 @@ void testWithOnReleaseHandler() { assertThat(count, equalTo(1)); } + + @Test + void testAddEventHandle() { + Instant now = Instant.now(); + DefaultEventHandle eventHandle = new DefaultEventHandle(now); + acknowledgementSet = mock(AcknowledgementSet.class); + eventHandle.addAcknowledgementSet(acknowledgementSet); + DefaultEventHandle eventHandle2 = new DefaultEventHandle(now); + eventHandle.addEventHandle(eventHandle2); + verify(acknowledgementSet).add(eventHandle2); + } } diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOptionTest.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOptionTest.java index 90a319ad24..ca40ea28a5 100644 --- a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOptionTest.java +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/HandleFailedEventsOptionTest.java @@ -5,29 +5,84 @@ package org.opensearch.dataprepper.model.event; -import org.hamcrest.CoreMatchers; +import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; import org.junit.jupiter.params.provider.EnumSource; +import java.util.stream.Stream; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.jupiter.params.provider.Arguments.arguments; class HandleFailedEventsOptionTest { + @ParameterizedTest + @ArgumentsSource(EnumToShouldLogArgumentsProvider.class) + void shouldLog_returns_expected_value(final HandleFailedEventsOption option, final boolean shouldLog) { + assertThat(option.shouldLog(), equalTo(shouldLog)); + } + + @ParameterizedTest + @ArgumentsSource(EnumToShouldShouldDropArgumentsProvider.class) + void shouldDropEvent_returns_expected_value(final HandleFailedEventsOption option, final boolean shouldDrop) { + assertThat(option.shouldDropEvent(), equalTo(shouldDrop)); + } + + @ParameterizedTest + @ArgumentsSource(EnumToOptionValueArgumentsProvider.class) + void toOptionValue_returns_expected_value(final HandleFailedEventsOption option, final String optionValue) { + assertThat(option.toOptionValue(), equalTo(optionValue)); + } + + @ParameterizedTest + @ArgumentsSource(EnumToOptionValueArgumentsProvider.class) + void fromOptionValue_returns_expected_option(final HandleFailedEventsOption option, final String optionValue) { + assertThat(HandleFailedEventsOption.fromOptionValue(optionValue), equalTo(option)); + } + @ParameterizedTest @EnumSource(HandleFailedEventsOption.class) - void fromOptionValue(final HandleFailedEventsOption option) { - assertThat(HandleFailedEventsOption.fromOptionValue(option.name()), CoreMatchers.is(option)); + void toOptionValue_returns_non_null_for_all(final HandleFailedEventsOption option) { + assertThat(option.toOptionValue(), notNullValue()); + } - if (option == HandleFailedEventsOption.SKIP || option == HandleFailedEventsOption.SKIP_SILENTLY) { - assertThat(option.shouldDropEvent(), equalTo(false)); - } else { - assertThat(option.shouldDropEvent(), equalTo(true)); + private static class EnumToOptionValueArgumentsProvider implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext context) { + return Stream.of( + arguments(HandleFailedEventsOption.SKIP, "skip"), + arguments(HandleFailedEventsOption.SKIP_SILENTLY, "skip_silently"), + arguments(HandleFailedEventsOption.DROP, "drop"), + arguments(HandleFailedEventsOption.DROP_SILENTLY, "drop_silently") + ); } + } + + private static class EnumToShouldShouldDropArgumentsProvider implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext context) { + return Stream.of( + arguments(HandleFailedEventsOption.SKIP, false), + arguments(HandleFailedEventsOption.SKIP_SILENTLY, false), + arguments(HandleFailedEventsOption.DROP, true), + arguments(HandleFailedEventsOption.DROP_SILENTLY, true) + ); + } + } - if (option == HandleFailedEventsOption.SKIP_SILENTLY || option == HandleFailedEventsOption.DROP_SILENTLY) { - assertThat(option.shouldLog(), equalTo(false)); - } else { - assertThat(option.shouldLog(), equalTo(true)); + private static class EnumToShouldLogArgumentsProvider implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext context) { + return Stream.of( + arguments(HandleFailedEventsOption.SKIP, true), + arguments(HandleFailedEventsOption.DROP, true), + arguments(HandleFailedEventsOption.SKIP_SILENTLY, false), + arguments(HandleFailedEventsOption.DROP_SILENTLY, false) + ); } } } diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/sink/AbstractSinkTest.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/sink/AbstractSinkTest.java index 8d1af7ea44..1026cb6083 100644 --- a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/sink/AbstractSinkTest.java +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/sink/AbstractSinkTest.java @@ -7,40 +7,55 @@ import io.micrometer.core.instrument.Measurement; import io.micrometer.core.instrument.Statistic; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.opensearch.dataprepper.metrics.MetricNames; import org.opensearch.dataprepper.metrics.MetricsTestUtil; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventHandle; -import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.record.Record; import java.time.Duration; +import java.time.Instant; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.StringJoiner; import java.util.UUID; +import java.util.function.BiConsumer; import static org.awaitility.Awaitility.await; +import static org.hamcrest.CoreMatchers.anyOf; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.number.OrderingComparison.greaterThan; +import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo; +import static org.hamcrest.number.OrderingComparison.lessThan; +import static org.junit.jupiter.api.Assertions.assertAll; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; class AbstractSinkTest { - private int count; - @Test - void testMetrics() { - final String sinkName = "testSink"; - final String pipelineName = "pipelineName"; + private String sinkName; + private String pipelineName; + private PluginSetting pluginSetting; + + @BeforeEach + void setUp() { + sinkName = "testSink"; + pipelineName = "pipelineName"; MetricsTestUtil.initMetrics(); - PluginSetting pluginSetting = new PluginSetting(sinkName, Collections.emptyMap()); + pluginSetting = new PluginSetting(sinkName, Collections.emptyMap()); pluginSetting.setPipelineName(pipelineName); + } + + @Test + void testMetrics() { AbstractSink> abstractSink = new AbstractSinkImpl(pluginSetting); abstractSink.initialize(); assertEquals(abstractSink.isReady(), true); @@ -63,31 +78,30 @@ void testMetrics() { assertEquals(5.0, recordsInMeasurements.get(0).getValue(), 0); assertEquals(3, elapsedTimeMeasurements.size()); assertEquals(1.0, MetricsTestUtil.getMeasurementFromList(elapsedTimeMeasurements, Statistic.COUNT).getValue(), 0); - assertTrue(MetricsTestUtil.isBetween( - MetricsTestUtil.getMeasurementFromList(elapsedTimeMeasurements, Statistic.TOTAL_TIME).getValue(), - 0.2, - 0.3)); + double totalTime = MetricsTestUtil.getMeasurementFromList(elapsedTimeMeasurements, Statistic.TOTAL_TIME).getValue(); + assertAll( + () -> assertThat(totalTime, greaterThan(0.1)), + () -> assertThat(totalTime, lessThan(0.2)) + ); assertEquals(abstractSink.getRetryThreadState(), null); abstractSink.shutdown(); } @Test void testSinkNotReady() throws InterruptedException { - final String sinkName = "testSink"; - final String pipelineName = "pipelineName"; - MetricsTestUtil.initMetrics(); - PluginSetting pluginSetting = new PluginSetting(sinkName, Collections.emptyMap()); - pluginSetting.setPipelineName(pipelineName); AbstractSinkNotReadyImpl abstractSink = new AbstractSinkNotReadyImpl(pluginSetting); abstractSink.initialize(); - assertEquals(abstractSink.isReady(), false); - assertEquals(abstractSink.getRetryThreadState(), Thread.State.RUNNABLE); - // Do another intialize to make sure the sink is still not ready - abstractSink.initialize(); - assertEquals(abstractSink.isReady(), false); - await().atMost(Duration.ofSeconds(5)) - .until(abstractSink::isReady); - assertEquals(abstractSink.getRetryThreadState(), Thread.State.TERMINATED); + assertThat(abstractSink.isReady(), equalTo(false)); + assertThat(abstractSink.getRetryThreadState(), anyOf(equalTo(Thread.State.RUNNABLE), equalTo(Thread.State.TIMED_WAITING))); + + await().atMost(Duration.ofSeconds(1)) + .untilAsserted(() -> assertThat(abstractSink.initCount, greaterThanOrEqualTo(1))); + + abstractSink.initialized = true; + assertThat(abstractSink.isReady(), equalTo(true)); + await().atMost(Duration.ofSeconds(1)) + .untilAsserted(() -> assertThat(abstractSink.getRetryThreadState(), equalTo(Thread.State.TERMINATED))); + assertThat(abstractSink.getRetryThreadState(), equalTo(Thread.State.TERMINATED)); int initCountBeforeShutdown = abstractSink.initCount; abstractSink.shutdown(); Thread.sleep(200); @@ -96,33 +110,42 @@ void testSinkNotReady() throws InterruptedException { @Test void testSinkWithRegisterEventReleaseHandler() { - final String sinkName = "testSink"; - final String pipelineName = "pipelineName"; - MetricsTestUtil.initMetrics(); - PluginSetting pluginSetting = new PluginSetting(sinkName, Collections.emptyMap()); - pluginSetting.setPipelineName(pipelineName); - AbstractSink> abstractSink = new AbstractEventSinkImpl(pluginSetting); + final AbstractSink> abstractSink = new AbstractEventSinkImpl(pluginSetting); abstractSink.initialize(); assertEquals(abstractSink.isReady(), true); - count = 0; - Event event = JacksonEvent.builder() - .withEventType("event") - .build(); - Record record = mock(Record.class); - EventHandle eventHandle = mock(EventHandle.class); + + final Event event = mock(Event.class); + final EventHandle eventHandle = mock(EventHandle.class); + final int minimumLatencySeconds = 20; + final Instant startTime = Instant.now().minus(Duration.ofSeconds(minimumLatencySeconds)); + when(eventHandle.getInternalOriginationTime()).thenReturn(startTime); + when(event.getEventHandle()).thenReturn(eventHandle); + doAnswer(a -> { + final BiConsumer onReleaseHandler = a.getArgument(0, BiConsumer.class); + onReleaseHandler.accept(eventHandle, true); + return a; + }).when(eventHandle).onRelease(any()); + final Record record = mock(Record.class); when(record.getData()).thenReturn(event); abstractSink.updateLatencyMetrics(Arrays.asList(record)); abstractSink.output(Arrays.asList(record)); - await().atMost(Duration.ofSeconds(5)) - .until(abstractSink::isReady); abstractSink.shutdown(); + + final List latencyMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(pipelineName).add(sinkName).add(SinkLatencyMetrics.INTERNAL_LATENCY).toString()); + assertThat(latencyMeasurements.size(), greaterThanOrEqualTo(1)); + double totalTime = MetricsTestUtil.getMeasurementFromList(latencyMeasurements, Statistic.TOTAL_TIME).getValue(); + assertAll( + () -> assertThat(totalTime, greaterThan((double)minimumLatencySeconds)), + () -> assertThat(totalTime, lessThan( minimumLatencySeconds + 1.0)) + ); } private static class AbstractEventSinkImpl extends AbstractSink> { AbstractEventSinkImpl(PluginSetting pluginSetting) { - super(pluginSetting, 10, 1000); + super(pluginSetting); } @Override @@ -152,13 +175,13 @@ public boolean isReady() { private static class AbstractSinkImpl extends AbstractSink> { AbstractSinkImpl(PluginSetting pluginSetting) { - super(pluginSetting, 10, 1000); + super(pluginSetting, 10, 10); } @Override public void doOutput(Collection> records) { try { - Thread.sleep(200); + Thread.sleep(150); } catch (InterruptedException e) { } @@ -184,18 +207,13 @@ private static class AbstractSinkNotReadyImpl extends AbstractSink> records) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - - } } @Override diff --git a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/MinimalPipelineIT.java b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/MinimalPipelineIT.java index bb0ce699a5..966d577131 100644 --- a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/MinimalPipelineIT.java +++ b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/MinimalPipelineIT.java @@ -8,12 +8,12 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.test.framework.DataPrepperTestRunner; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.plugins.InMemorySinkAccessor; import org.opensearch.dataprepper.plugins.InMemorySourceAccessor; +import org.opensearch.dataprepper.test.framework.DataPrepperTestRunner; import java.util.Collections; import java.util.List; diff --git a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/PipelinesWithAcksIT.java b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/PipelinesWithAcksIT.java index 7d3a73d7a5..4b5c4106d8 100644 --- a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/PipelinesWithAcksIT.java +++ b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/PipelinesWithAcksIT.java @@ -7,26 +7,26 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.test.framework.DataPrepperTestRunner; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.plugins.InMemorySinkAccessor; import org.opensearch.dataprepper.plugins.InMemorySourceAccessor; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.Assert.assertFalse; +import org.opensearch.dataprepper.test.framework.DataPrepperTestRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.time.Instant; import java.util.List; import java.util.concurrent.TimeUnit; -import java.time.Instant; import static org.awaitility.Awaitility.await; import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.Matchers.lessThanOrEqualTo; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.lessThanOrEqualTo; +import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; class PipelinesWithAcksIT { private static final Logger LOG = LoggerFactory.getLogger(PipelinesWithAcksIT.class); diff --git a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryIT.java b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryIT.java index 4c52c614d4..27dfa97cef 100644 --- a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryIT.java +++ b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryIT.java @@ -10,16 +10,21 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; import org.opensearch.dataprepper.core.event.EventFactoryApplicationContextMarker; +import org.opensearch.dataprepper.core.validation.LoggingPluginErrorsHandler; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; +import org.opensearch.dataprepper.plugins.configtest.TestComponentWithConfigInject; +import org.opensearch.dataprepper.plugins.configtest.TestDISourceWithConfig; +import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import org.opensearch.dataprepper.model.source.Source; import org.opensearch.dataprepper.plugins.TestObjectPlugin; +import org.opensearch.dataprepper.plugins.test.TestComponent; +import org.opensearch.dataprepper.plugins.test.TestDISource; import org.opensearch.dataprepper.plugins.test.TestPlugin; -import org.opensearch.dataprepper.validation.LoggingPluginErrorsHandler; -import org.opensearch.dataprepper.validation.PluginErrorCollector; -import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.HashMap; @@ -30,6 +35,8 @@ import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; /** @@ -96,6 +103,49 @@ void loadPlugin_should_return_a_new_plugin_instance_with_the_expected_configurat assertThat(configuration.getOptionalString(), equalTo(optionalStringValue)); } + @Test + void loadPlugin_should_return_a_new_plugin_instance_with_DI_context_initialized() { + + final Map pluginSettingMap = new HashMap<>(); + final PluginSetting pluginSetting = new PluginSetting("test_di_source", pluginSettingMap); + pluginSetting.setPipelineName(pipelineName); + + final Source sourcePlugin = createObjectUnderTest().loadPlugin(Source.class, pluginSetting); + + assertThat(sourcePlugin, instanceOf(TestDISource.class)); + TestDISource plugin = (TestDISource) sourcePlugin; + // Testing the auto wired been with the Dependency Injection + assertNotNull(plugin.getTestComponent()); + assertInstanceOf(TestComponent.class, plugin.getTestComponent()); + assertThat(plugin.getTestComponent().getIdentifier(), equalTo("test-component")); + } + + @Test + void loadPlugin_should_return_a_new_plugin_instance_with_DI_context_and_config_injected() { + + final String requiredStringValue = UUID.randomUUID().toString(); + final String optionalStringValue = UUID.randomUUID().toString(); + + final Map pluginSettingMap = new HashMap<>(); + pluginSettingMap.put("required_string", requiredStringValue); + pluginSettingMap.put("optional_string", optionalStringValue); + final PluginSetting pluginSetting = new PluginSetting("test_di_source_with_config", pluginSettingMap); + pluginSetting.setPipelineName("test_di_source_with_config"); + + final Source sourcePlugin = createObjectUnderTest().loadPlugin(Source.class, pluginSetting); + + assertThat(sourcePlugin, instanceOf(TestDISourceWithConfig.class)); + TestDISourceWithConfig plugin = (TestDISourceWithConfig) sourcePlugin; + // Testing the auto wired been with the Dependency Injection + assertNotNull(plugin.getTestComponent()); + assertInstanceOf(TestComponentWithConfigInject.class, plugin.getTestComponent()); + TestPluginConfiguration pluginConfig = plugin.getTestComponent().getConfiguration(); + assertInstanceOf(TestPluginConfiguration.class, pluginConfig); + assertThat(pluginConfig.getRequiredString(), equalTo(requiredStringValue)); + assertThat(pluginConfig.getOptionalString(), equalTo(optionalStringValue)); + assertThat(plugin.getTestComponent().getIdentifier(), equalTo("test-component-with-plugin-config-injected")); + } + @Test void loadPlugin_should_return_a_new_plugin_instance_with_the_expected_configuration_variable_args() { diff --git a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/ExtensionsIT.java b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/ExtensionsIT.java index 53dee72e55..552dea13ee 100644 --- a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/ExtensionsIT.java +++ b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/ExtensionsIT.java @@ -14,26 +14,27 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; -import org.opensearch.dataprepper.breaker.CircuitBreakerManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.breaker.CircuitBreakerManager; import org.opensearch.dataprepper.core.event.EventFactoryApplicationContextMarker; +import org.opensearch.dataprepper.core.parser.config.DataPrepperAppConfiguration; +import org.opensearch.dataprepper.core.parser.config.FileStructurePathProvider; +import org.opensearch.dataprepper.core.parser.config.PipelineParserConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.pipeline.router.RouterFactory; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactory; +import org.opensearch.dataprepper.core.validation.LoggingPluginErrorsHandler; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; +import org.opensearch.dataprepper.expression.StartsWithExpressionFunction; +import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.parser.config.DataPrepperAppConfiguration; -import org.opensearch.dataprepper.parser.config.FileStructurePathProvider; -import org.opensearch.dataprepper.parser.config.PipelineParserConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; -import org.opensearch.dataprepper.pipeline.router.RouterFactory; import org.opensearch.dataprepper.plugin.DefaultPluginFactory; import org.opensearch.dataprepper.plugin.ObjectMapperConfiguration; import org.opensearch.dataprepper.plugin.TestPluggableInterface; import org.opensearch.dataprepper.plugins.test.TestExtension; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactory; -import org.opensearch.dataprepper.validation.LoggingPluginErrorsHandler; -import org.opensearch.dataprepper.validation.PluginErrorCollector; -import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.ArrayList; @@ -92,6 +93,7 @@ void setUp() { coreContext.scan(DefaultAcknowledgementSetManager.class.getPackage().getName()); coreContext.scan(DefaultPluginFactory.class.getPackage().getName()); + coreContext.scan(StartsWithExpressionFunction.class.getPackage().getName()); when(fileStructurePathProvider.getPipelineConfigFileLocation()).thenReturn( "src/test/resources/valid_pipeline.yml" diff --git a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySink.java b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySink.java index 360367a1e4..a98b1c56b8 100644 --- a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySink.java +++ b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySink.java @@ -5,13 +5,13 @@ package org.opensearch.dataprepper.plugins; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventHandle; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.sink.Sink; -import org.opensearch.dataprepper.model.event.EventHandle; import java.util.Collection; diff --git a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySource.java b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySource.java index f95e51e7f3..cb363ce2c8 100644 --- a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySource.java +++ b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/plugins/InMemorySource.java @@ -5,21 +5,21 @@ package org.opensearch.dataprepper.plugins; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; -import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.Source; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.time.Duration; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; -import java.time.Duration; /** * A Data Prepper source which can receive records via the {@link InMemorySourceAccessor}. diff --git a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/test/framework/DataPrepperTestRunner.java b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/test/framework/DataPrepperTestRunner.java index 976b0dce66..6f38971d47 100644 --- a/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/test/framework/DataPrepperTestRunner.java +++ b/data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/test/framework/DataPrepperTestRunner.java @@ -6,8 +6,8 @@ package org.opensearch.dataprepper.test.framework; import org.opensearch.dataprepper.AbstractContextManager; -import org.opensearch.dataprepper.DataPrepper; -import org.opensearch.dataprepper.parser.config.FileStructurePathProvider; +import org.opensearch.dataprepper.core.DataPrepper; +import org.opensearch.dataprepper.core.parser.config.FileStructurePathProvider; import org.opensearch.dataprepper.plugins.InMemorySinkAccessor; import org.opensearch.dataprepper.plugins.InMemorySourceAccessor; import org.slf4j.Logger; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/AbstractContextManager.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/AbstractContextManager.java index e2cb80bbe6..5125267e8f 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/AbstractContextManager.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/AbstractContextManager.java @@ -5,6 +5,7 @@ package org.opensearch.dataprepper; +import org.opensearch.dataprepper.core.DataPrepper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -24,7 +25,11 @@ public abstract class AbstractContextManager { private static final Logger LOG = LoggerFactory.getLogger(AbstractContextManager.class); private static final String BASE_DATA_PREPPER_PACKAGE = "org.opensearch.dataprepper"; - private static final String EXPRESSION_PACKAGE = BASE_DATA_PREPPER_PACKAGE + ".expression"; + private static final String[] BASE_DATA_PREPPER_PACKAGES = { + BASE_DATA_PREPPER_PACKAGE + ".core", + BASE_DATA_PREPPER_PACKAGE + ".plugin" + }; + private static final String EXPRESSION_PACKAGE = BASE_DATA_PREPPER_PACKAGE + ".expression"; private final AnnotationConfigApplicationContext publicApplicationContext; private final AnnotationConfigApplicationContext coreApplicationContext; @@ -53,7 +58,7 @@ private void start() { publicApplicationContext.refresh(); coreApplicationContext.setParent(publicApplicationContext); - coreApplicationContext.scan(BASE_DATA_PREPPER_PACKAGE); + coreApplicationContext.scan(BASE_DATA_PREPPER_PACKAGES); preRefreshCoreApplicationContext(coreApplicationContext); coreApplicationContext.refresh(); diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/DataPrepperShutdownOptions.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/DataPrepperShutdownOptions.java new file mode 100644 index 0000000000..ea3edbf4f5 --- /dev/null +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/DataPrepperShutdownOptions.java @@ -0,0 +1,62 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper; + +import java.time.Duration; + +public class DataPrepperShutdownOptions { + private final Duration bufferReadTimeout; + private final Duration bufferDrainTimeout; + + public static DataPrepperShutdownOptions defaultOptions() { + return new DataPrepperShutdownOptions(builder()); + } + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private Duration bufferReadTimeout; + private Duration bufferDrainTimeout; + + private Builder() { + } + + public Builder withBufferReadTimeout(final Duration bufferReadTimeout) { + this.bufferReadTimeout = bufferReadTimeout; + return this; + } + + public Builder withBufferDrainTimeout(final Duration bufferDrainTimeout) { + this.bufferDrainTimeout = bufferDrainTimeout; + return this; + } + + public DataPrepperShutdownOptions build() { + return new DataPrepperShutdownOptions(this); + } + } + + private DataPrepperShutdownOptions(final Builder builder) { + this.bufferReadTimeout = builder.bufferReadTimeout; + this.bufferDrainTimeout = builder.bufferDrainTimeout; + + if(bufferReadTimeout != null && bufferDrainTimeout != null) { + if (bufferReadTimeout.compareTo(bufferDrainTimeout) > 0) { + throw new IllegalArgumentException("Buffer read timeout cannot be greater than buffer drain timeout"); + } + } + } + + public Duration getBufferReadTimeout() { + return bufferReadTimeout; + } + + public Duration getBufferDrainTimeout() { + return bufferDrainTimeout; + } +} diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/DataPrepper.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/DataPrepper.java similarity index 78% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/DataPrepper.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/DataPrepper.java index 19c0822ce9..c6a04bca29 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/DataPrepper.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/DataPrepper.java @@ -3,16 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper; +package org.opensearch.dataprepper.core; import io.micrometer.core.instrument.util.StringUtils; +import org.opensearch.dataprepper.DataPrepperShutdownListener; +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.core.parser.PipelineTransformer; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderServer; +import org.opensearch.dataprepper.core.pipeline.Pipeline; +import org.opensearch.dataprepper.core.pipeline.PipelineObserver; +import org.opensearch.dataprepper.core.pipeline.PipelinesProvider; +import org.opensearch.dataprepper.core.pipeline.server.DataPrepperServer; +import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.parser.PipelineTransformer; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderServer; -import org.opensearch.dataprepper.pipeline.Pipeline; -import org.opensearch.dataprepper.pipeline.PipelineObserver; -import org.opensearch.dataprepper.pipeline.PipelinesProvider; -import org.opensearch.dataprepper.pipeline.server.DataPrepperServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Lazy; @@ -42,6 +45,7 @@ public class DataPrepper implements PipelinesProvider { private final PipelinesObserver pipelinesObserver; private final Map transformationPipelines; private final Predicate> shouldShutdownOnPipelineFailurePredicate; + private final PipelinesDataFlowModel pipelinesDataFlowModel; // TODO: Remove DataPrepperServer dependency on DataPrepper @Inject @@ -67,8 +71,9 @@ public DataPrepper( this.pluginFactory = pluginFactory; transformationPipelines = pipelineTransformer.transformConfiguration(); + pipelinesDataFlowModel = pipelineTransformer.getPipelinesDataFlowModel(); this.shouldShutdownOnPipelineFailurePredicate = shouldShutdownOnPipelineFailurePredicate; - if (transformationPipelines.size() == 0) { + if (transformationPipelines.isEmpty()) { throw new RuntimeException("No valid pipeline is available for execution, exiting"); } this.peerForwarderServer = peerForwarderServer; @@ -97,17 +102,23 @@ public void shutdown() { shutdownServers(); } + private void shutdownPipelines() { + shutdownPipelines(DataPrepperShutdownOptions.defaultOptions()); + } + /** * Triggers the shutdown of all configured valid pipelines. + * @param shutdownOptions {@link DataPrepperShutdownOptions} to control the behavior of the shutdown process + * e.g. timeout, graceful shutdown, etc. */ - public void shutdownPipelines() { + public void shutdownPipelines(final DataPrepperShutdownOptions shutdownOptions) { transformationPipelines.forEach((name, pipeline) -> { pipeline.removeShutdownObserver(pipelinesObserver); }); for (final Pipeline pipeline : transformationPipelines.values()) { LOG.info("Shutting down pipeline: {}", pipeline.getName()); - pipeline.shutdown(); + pipeline.shutdown(shutdownOptions); } } @@ -127,11 +138,12 @@ public void shutdownServers() { * * @param pipeline name of the pipeline */ - public void shutdownPipelines(final String pipeline) { + public void shutdownPipeline(final String pipeline) { if (transformationPipelines.containsKey(pipeline)) { transformationPipelines.get(pipeline).shutdown(); } } + public PluginFactory getPluginFactory() { return pluginFactory; } @@ -140,6 +152,10 @@ public Map getTransformationPipelines() { return transformationPipelines; } + public PipelinesDataFlowModel getPipelinesDataFlowModel() { + return pipelinesDataFlowModel; + } + public void registerShutdownHandler(final DataPrepperShutdownListener shutdownListener) { this.shutdownListeners.add(shutdownListener); } diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementAppConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementAppConfig.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementAppConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementAppConfig.java index 2d32cb116c..1a36ad4020 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementAppConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementAppConfig.java @@ -3,13 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; @Configuration diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitor.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitor.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitor.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitor.java index 8c911346db..4ca2c8d13a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitor.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitor.java @@ -3,17 +3,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; - -import java.util.concurrent.locks.ReentrantLock; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.Set; -import java.util.HashSet; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantLock; /** * AcknowledgementSetMonitor - monitors the acknowledgement sets for completion/expiration *

diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorThread.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorThread.java similarity index 95% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorThread.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorThread.java index 98377df89a..af35fec348 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorThread.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorThread.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import java.time.Duration; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/CallbackTheadFactory.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/CallbackTheadFactory.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/CallbackTheadFactory.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/CallbackTheadFactory.java index 5969994f0d..c65e96933c 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/CallbackTheadFactory.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/CallbackTheadFactory.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import java.util.Objects; import java.util.concurrent.ThreadFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSet.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSet.java similarity index 88% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSet.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSet.java index fd26d10c72..b52399646f 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSet.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSet.java @@ -3,15 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import org.opensearch.dataprepper.model.acknowledgements.ProgressCheck; -import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventHandle; import org.opensearch.dataprepper.model.event.InternalEventHandle; -import org.opensearch.dataprepper.model.event.DefaultEventHandle; -import org.opensearch.dataprepper.model.event.JacksonEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,12 +16,12 @@ import java.time.Instant; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; -import java.util.concurrent.TimeUnit; import java.util.function.Consumer; public class DefaultAcknowledgementSet implements AcknowledgementSet { @@ -75,18 +72,13 @@ public void checkProgress() { } @Override - public void add(Event event) { + public void add(EventHandle eventHandle) { lock.lock(); try { - if (event instanceof JacksonEvent) { - EventHandle eventHandle = event.getEventHandle(); - if (eventHandle instanceof DefaultEventHandle) { - InternalEventHandle internalEventHandle = (InternalEventHandle)(DefaultEventHandle)eventHandle; - internalEventHandle.addAcknowledgementSet(this); - pendingAcknowledgments.put(eventHandle, new AtomicInteger(1)); - totalEventsAdded.incrementAndGet(); - } - } + InternalEventHandle internalEventHandle = (InternalEventHandle)eventHandle; + internalEventHandle.addAcknowledgementSet(this); + pendingAcknowledgments.put(eventHandle, new AtomicInteger(1)); + totalEventsAdded.incrementAndGet(); } finally { lock.unlock(); } diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetManager.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetManager.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetManager.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetManager.java index b8f81dbfc1..4825797112 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetManager.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetManager.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; +import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; -import org.opensearch.dataprepper.metrics.PluginMetrics; import javax.inject.Inject; import javax.inject.Named; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetMetrics.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetMetrics.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetMetrics.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetMetrics.java index 6b1b36b592..ebbc805a03 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetMetrics.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetMetrics.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; -import org.opensearch.dataprepper.metrics.PluginMetrics; import io.micrometer.core.instrument.Counter; +import org.opensearch.dataprepper.metrics.PluginMetrics; public class DefaultAcknowledgementSetMetrics { static final String CREATED_METRIC_NAME = "numberOfAcknowledgementSetsCreated"; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultProgressCheck.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultProgressCheck.java similarity index 87% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultProgressCheck.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultProgressCheck.java index 87b7a8226d..0a4d7f8cd7 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/DefaultProgressCheck.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/DefaultProgressCheck.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.opensearch.dataprepper.model.acknowledgements.ProgressCheck; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/InactiveAcknowledgementSetManager.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/InactiveAcknowledgementSetManager.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/InactiveAcknowledgementSetManager.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/InactiveAcknowledgementSetManager.java index 52f0e1978f..268e4a5c4b 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/acknowledgements/InactiveAcknowledgementSetManager.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/acknowledgements/InactiveAcknowledgementSetManager.java @@ -3,12 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; -import java.util.function.Consumer; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; + import java.time.Duration; +import java.util.function.Consumer; public class InactiveAcknowledgementSetManager implements AcknowledgementSetManager { private static InactiveAcknowledgementSetManager theInstance; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/CircuitBreakerAppConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerAppConfig.java similarity index 86% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/CircuitBreakerAppConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerAppConfig.java index c8d6393682..20965b9c4f 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/CircuitBreakerAppConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerAppConfig.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; +import org.opensearch.dataprepper.core.parser.model.CircuitBreakerConfig; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import org.opensearch.dataprepper.model.breaker.CircuitBreaker; -import org.opensearch.dataprepper.parser.model.CircuitBreakerConfig; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/CircuitBreakerManager.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerManager.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/CircuitBreakerManager.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerManager.java index 405b9e3bdc..634e0c9906 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/CircuitBreakerManager.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerManager.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; import org.opensearch.dataprepper.model.breaker.CircuitBreaker; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/HeapCircuitBreaker.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/HeapCircuitBreaker.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/HeapCircuitBreaker.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/HeapCircuitBreaker.java index 9993b9e4a8..d5ccbfd53e 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/HeapCircuitBreaker.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/HeapCircuitBreaker.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; import io.micrometer.core.instrument.Metrics; +import org.opensearch.dataprepper.core.parser.model.HeapCircuitBreakerConfig; import org.opensearch.dataprepper.model.breaker.CircuitBreaker; -import org.opensearch.dataprepper.parser.model.HeapCircuitBreakerConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/InnerCircuitBreaker.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/InnerCircuitBreaker.java similarity index 87% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/InnerCircuitBreaker.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/InnerCircuitBreaker.java index ebaa81fa7d..ba5c9a3509 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/breaker/InnerCircuitBreaker.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/breaker/InnerCircuitBreaker.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; import org.opensearch.dataprepper.model.breaker.CircuitBreaker; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFLoggingMeterRegistry.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFLoggingMeterRegistry.java similarity index 99% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFLoggingMeterRegistry.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFLoggingMeterRegistry.java index 1ebf870c71..ede3e36600 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFLoggingMeterRegistry.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFLoggingMeterRegistry.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; import io.micrometer.cloudwatch2.CloudWatchNamingConvention; import io.micrometer.core.instrument.Clock; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFLoggingRegistryConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFLoggingRegistryConfig.java similarity index 87% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFLoggingRegistryConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFLoggingRegistryConfig.java index fd1a0fa189..9beb1d6cd9 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFLoggingRegistryConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFLoggingRegistryConfig.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; import io.micrometer.core.instrument.step.StepRegistryConfig; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFMetricUtils.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFMetricUtils.java similarity index 95% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFMetricUtils.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFMetricUtils.java index 9b12314c79..54112eba83 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/EMFMetricUtils.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/EMFMetricUtils.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; class EMFMetricUtils { diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/JvmMemoryAggregateMetrics.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/JvmMemoryAggregateMetrics.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/JvmMemoryAggregateMetrics.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/JvmMemoryAggregateMetrics.java index 7311504980..5838c53e97 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/meter/JvmMemoryAggregateMetrics.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/meter/JvmMemoryAggregateMetrics.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.MeterRegistry; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/CircuitBreakingBuffer.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/CircuitBreakingBuffer.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/CircuitBreakingBuffer.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/CircuitBreakingBuffer.java index d61f183f05..8e721fec1a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/CircuitBreakingBuffer.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/CircuitBreakingBuffer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; +package org.opensearch.dataprepper.core.parser; import org.opensearch.dataprepper.model.breaker.CircuitBreaker; import org.opensearch.dataprepper.model.buffer.Buffer; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/DataFlowComponent.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/DataFlowComponent.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/DataFlowComponent.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/DataFlowComponent.java index 731ad54ea5..a15e028a12 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/DataFlowComponent.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/DataFlowComponent.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; +package org.opensearch.dataprepper.core.parser; import java.util.Collection; import java.util.HashSet; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/MultiBufferDecorator.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/MultiBufferDecorator.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/MultiBufferDecorator.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/MultiBufferDecorator.java index 76440c0c56..a77f3a441e 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/MultiBufferDecorator.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/MultiBufferDecorator.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; +package org.opensearch.dataprepper.core.parser; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.buffer.DelegatingBuffer; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/PipelineTransformer.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/PipelineTransformer.java similarity index 89% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/PipelineTransformer.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/PipelineTransformer.java index 4a5e37a327..c8c7f2ed5e 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/PipelineTransformer.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/PipelineTransformer.java @@ -3,37 +3,38 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; - -import org.opensearch.dataprepper.breaker.CircuitBreakerManager; +package org.opensearch.dataprepper.core.parser; + +import org.opensearch.dataprepper.core.breaker.CircuitBreakerManager; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwardingProcessorDecorator; +import org.opensearch.dataprepper.core.pipeline.Pipeline; +import org.opensearch.dataprepper.core.pipeline.PipelineConnector; +import org.opensearch.dataprepper.core.pipeline.router.Router; +import org.opensearch.dataprepper.core.pipeline.router.RouterFactory; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactory; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.annotations.SingleThread; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.configuration.PipelineModel; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.peerforwarder.RequiresPeerForwarding; import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import org.opensearch.dataprepper.model.plugin.PluginFactory; import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.sink.Sink; -import org.opensearch.dataprepper.model.source.Source; import org.opensearch.dataprepper.model.sink.SinkContext; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; -import org.opensearch.dataprepper.peerforwarder.PeerForwardingProcessorDecorator; -import org.opensearch.dataprepper.model.event.EventFactory; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; -import org.opensearch.dataprepper.pipeline.Pipeline; -import org.opensearch.dataprepper.pipeline.PipelineConnector; +import org.opensearch.dataprepper.model.source.Source; import org.opensearch.dataprepper.pipeline.parser.PipelineConfigurationValidator; import org.opensearch.dataprepper.pipeline.parser.model.PipelineConfiguration; import org.opensearch.dataprepper.pipeline.parser.model.SinkContextPluginSetting; -import org.opensearch.dataprepper.pipeline.router.Router; -import org.opensearch.dataprepper.pipeline.router.RouterFactory; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactory; import org.opensearch.dataprepper.validation.PluginError; -import org.opensearch.dataprepper.validation.PluginErrorCollector; import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,6 +54,9 @@ @SuppressWarnings("rawtypes") public class PipelineTransformer { private static final Logger LOG = LoggerFactory.getLogger(PipelineTransformer.class); + + static final String CONDITIONAL_ROUTE_INVALID_EXPRESSION_FORMAT = "Route %s contains an invalid conditional expression '%s'. " + + "See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax."; private static final String PIPELINE_TYPE = "pipeline"; private static final String ATTRIBUTE_NAME = "name"; private final PipelinesDataFlowModel pipelinesDataFlowModel; @@ -68,6 +72,8 @@ public class PipelineTransformer { private final PluginErrorCollector pluginErrorCollector; private final PluginErrorsHandler pluginErrorsHandler; + private final ExpressionEvaluator expressionEvaluator; + public PipelineTransformer(final PipelinesDataFlowModel pipelinesDataFlowModel, final PluginFactory pluginFactory, final PeerForwarderProvider peerForwarderProvider, @@ -78,7 +84,8 @@ public PipelineTransformer(final PipelinesDataFlowModel pipelinesDataFlowModel, final AcknowledgementSetManager acknowledgementSetManager, final SourceCoordinatorFactory sourceCoordinatorFactory, final PluginErrorCollector pluginErrorCollector, - final PluginErrorsHandler pluginErrorsHandler) { + final PluginErrorsHandler pluginErrorsHandler, + final ExpressionEvaluator expressionEvaluator) { this.pipelinesDataFlowModel = pipelinesDataFlowModel; this.pluginFactory = Objects.requireNonNull(pluginFactory); this.peerForwarderProvider = Objects.requireNonNull(peerForwarderProvider); @@ -90,6 +97,7 @@ public PipelineTransformer(final PipelinesDataFlowModel pipelinesDataFlowModel, this.sourceCoordinatorFactory = sourceCoordinatorFactory; this.pluginErrorCollector = pluginErrorCollector; this.pluginErrorsHandler = pluginErrorsHandler; + this.expressionEvaluator = expressionEvaluator; } public Map transformConfiguration() { @@ -169,7 +177,19 @@ private void buildPipelineFromConfiguration( final List subPipelinePluginErrors = pluginErrorCollector.getPluginErrors() .stream().filter(pluginError -> pipelineName.equals(pluginError.getPipelineName())) .collect(Collectors.toList()); - if (!subPipelinePluginErrors.isEmpty()) { + + final List invalidRouteExpressions = pipelineConfiguration.getRoutes() + .stream().filter(route -> !expressionEvaluator.isValidExpressionStatement(route.getCondition())) + .map(route -> PluginError.builder() + .componentType(PipelineModel.ROUTE_PLUGIN_TYPE) + .pipelineName(pipelineName) + .exception(new InvalidPluginConfigurationException( + String.format(CONDITIONAL_ROUTE_INVALID_EXPRESSION_FORMAT, route.getName(), route.getCondition()))) + .build()) + .collect(Collectors.toList()); + + if (!subPipelinePluginErrors.isEmpty() || !invalidRouteExpressions.isEmpty()) { + subPipelinePluginErrors.addAll(invalidRouteExpressions); pluginErrorsHandler.handleErrors(subPipelinePluginErrors); throw new InvalidPluginConfigurationException( String.format("One or more plugins are not configured correctly in the pipeline: %s.\n", @@ -387,4 +407,8 @@ private Buffer applyCircuitBreakerToBuffer(final Source source, final Buffer buf .map(b -> (Buffer) b) .orElseGet(() -> buffer); } + + public PipelinesDataFlowModel getPipelinesDataFlowModel() { + return pipelinesDataFlowModel; + } } diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/CustomTagsMeterFilter.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/CustomTagsMeterFilter.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/CustomTagsMeterFilter.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/CustomTagsMeterFilter.java index 0371709544..720343b40b 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/CustomTagsMeterFilter.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/CustomTagsMeterFilter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; import io.micrometer.core.instrument.Meter; import io.micrometer.core.instrument.Tag; @@ -16,7 +16,7 @@ import java.util.Set; import java.util.stream.Collectors; -import static org.opensearch.dataprepper.DataPrepper.getServiceNameForMetrics; +import static org.opensearch.dataprepper.core.DataPrepper.getServiceNameForMetrics; import static org.opensearch.dataprepper.metrics.MetricNames.DELIMITER; import static org.opensearch.dataprepper.metrics.MetricNames.SERVICE_NAME; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/DataPrepperAppConfiguration.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/DataPrepperAppConfiguration.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/DataPrepperAppConfiguration.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/DataPrepperAppConfiguration.java index e3783cfd88..0838f147f1 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/DataPrepperAppConfiguration.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/DataPrepperAppConfiguration.java @@ -3,15 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import org.opensearch.dataprepper.model.configuration.PluginModel; import org.opensearch.dataprepper.model.types.ByteCount; import org.opensearch.dataprepper.pipeline.parser.ByteCountDeserializer; import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/FileStructurePathProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/FileStructurePathProvider.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/FileStructurePathProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/FileStructurePathProvider.java index e72b9df472..1afa745162 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/FileStructurePathProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/FileStructurePathProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; import javax.annotation.Nullable; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/MetricTagFilter.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/MetricTagFilter.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/MetricTagFilter.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/MetricTagFilter.java index a5c74e8b7a..db34701623 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/MetricTagFilter.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/MetricTagFilter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/MetricsConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/MetricsConfig.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/MetricsConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/MetricsConfig.java index 27a5e93feb..d6804b0f41 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/MetricsConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/MetricsConfig.java @@ -3,13 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; -import org.opensearch.dataprepper.meter.EMFLoggingMeterRegistry; -import org.opensearch.dataprepper.meter.JvmMemoryAggregateMetrics; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.parser.model.MetricRegistryType; -import org.opensearch.dataprepper.pipeline.server.CloudWatchMeterRegistryProvider; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import io.micrometer.cloudwatch2.CloudWatchMeterRegistry; @@ -24,6 +19,11 @@ import io.micrometer.core.instrument.composite.CompositeMeterRegistry; import io.micrometer.prometheus.PrometheusConfig; import io.micrometer.prometheus.PrometheusMeterRegistry; +import org.opensearch.dataprepper.core.meter.EMFLoggingMeterRegistry; +import org.opensearch.dataprepper.core.meter.JvmMemoryAggregateMetrics; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.MetricRegistryType; +import org.opensearch.dataprepper.core.pipeline.server.CloudWatchMeterRegistryProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/PipelineParserConfiguration.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/PipelineParserConfiguration.java similarity index 82% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/PipelineParserConfiguration.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/PipelineParserConfiguration.java index 440e618f3b..0877bebd4d 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/config/PipelineParserConfiguration.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/config/PipelineParserConfiguration.java @@ -3,26 +3,27 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; -import org.opensearch.dataprepper.breaker.CircuitBreakerManager; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.core.breaker.CircuitBreakerManager; +import org.opensearch.dataprepper.core.parser.PipelineTransformer; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.pipeline.router.RouterFactory; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactory; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; +import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.parser.PipelineTransformer; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; import org.opensearch.dataprepper.pipeline.parser.PipelineConfigurationFileReader; import org.opensearch.dataprepper.pipeline.parser.PipelineConfigurationReader; import org.opensearch.dataprepper.pipeline.parser.PipelinesDataflowModelParser; import org.opensearch.dataprepper.pipeline.parser.rule.RuleEvaluator; import org.opensearch.dataprepper.pipeline.parser.transformer.DynamicConfigTransformer; import org.opensearch.dataprepper.pipeline.parser.transformer.PipelineConfigurationTransformer; -import org.opensearch.dataprepper.pipeline.router.RouterFactory; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactory; -import org.opensearch.dataprepper.validation.PluginErrorCollector; -import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -48,7 +49,8 @@ public PipelineTransformer pipelineParser( final AcknowledgementSetManager acknowledgementSetManager, final SourceCoordinatorFactory sourceCoordinatorFactory, final PluginErrorCollector pluginErrorCollector, - final PluginErrorsHandler pluginErrorsHandler + final PluginErrorsHandler pluginErrorsHandler, + final ExpressionEvaluator expressionEvaluator ) { return new PipelineTransformer(pipelinesDataFlowModel, pluginFactory, @@ -60,7 +62,8 @@ public PipelineTransformer pipelineParser( acknowledgementSetManager, sourceCoordinatorFactory, pluginErrorCollector, - pluginErrorsHandler); + pluginErrorsHandler, + expressionEvaluator); } @Bean diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/CircuitBreakerConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/CircuitBreakerConfig.java similarity index 91% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/CircuitBreakerConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/CircuitBreakerConfig.java index 99c9c45406..f3d51a1f5a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/CircuitBreakerConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/CircuitBreakerConfig.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.model; +package org.opensearch.dataprepper.core.parser.model; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/DataPrepperConfiguration.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/DataPrepperConfiguration.java similarity index 91% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/DataPrepperConfiguration.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/DataPrepperConfiguration.java index a8006a1aea..9212a9943b 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/DataPrepperConfiguration.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/DataPrepperConfiguration.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.model; +package org.opensearch.dataprepper.core.parser.model; import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonCreator; @@ -11,11 +11,13 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.annotation.Nulls; +import org.opensearch.dataprepper.core.event.EventConfiguration; +import org.opensearch.dataprepper.core.event.EventConfigurationContainer; +import org.opensearch.dataprepper.core.parser.config.MetricTagFilter; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.pipeline.PipelineShutdownOption; import org.opensearch.dataprepper.model.configuration.PipelineExtensions; import org.opensearch.dataprepper.model.configuration.PluginModel; -import org.opensearch.dataprepper.parser.config.MetricTagFilter; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.pipeline.PipelineShutdownOption; import org.opensearch.dataprepper.plugin.ExtensionsConfiguration; import java.time.Duration; @@ -29,7 +31,7 @@ /** * Class to hold configuration for DataPrepper, including server port and Log4j settings */ -public class DataPrepperConfiguration implements ExtensionsConfiguration { +public class DataPrepperConfiguration implements ExtensionsConfiguration, EventConfigurationContainer { static final Duration DEFAULT_SHUTDOWN_DURATION = Duration.ofSeconds(30L); private static final String DEFAULT_SOURCE_COORDINATION_STORE = "in_memory"; @@ -47,6 +49,7 @@ public class DataPrepperConfiguration implements ExtensionsConfiguration { private CircuitBreakerConfig circuitBreakerConfig; private SourceCoordinationConfig sourceCoordinationConfig; private PipelineShutdownOption pipelineShutdown; + private EventConfiguration eventConfiguration; private Map metricTags = new HashMap<>(); private List metricTagFilters = new LinkedList<>(); private PeerForwarderConfiguration peerForwarderConfiguration; @@ -92,6 +95,7 @@ public DataPrepperConfiguration( @JsonProperty("circuit_breakers") final CircuitBreakerConfig circuitBreakerConfig, @JsonProperty("source_coordination") final SourceCoordinationConfig sourceCoordinationConfig, @JsonProperty("pipeline_shutdown") final PipelineShutdownOption pipelineShutdown, + @JsonProperty("event") final EventConfiguration eventConfiguration, @JsonProperty("extensions") @JsonInclude(JsonInclude.Include.NON_NULL) @JsonSetter(nulls = Nulls.SKIP) @@ -102,6 +106,7 @@ public DataPrepperConfiguration( ? new SourceCoordinationConfig(new PluginModel(DEFAULT_SOURCE_COORDINATION_STORE, Collections.emptyMap()), null) : sourceCoordinationConfig; this.pipelineShutdown = pipelineShutdown != null ? pipelineShutdown : DEFAULT_PIPELINE_SHUTDOWN; + this.eventConfiguration = eventConfiguration != null ? eventConfiguration : EventConfiguration.defaultConfiguration(); setSsl(ssl); this.keyStoreFilePath = keyStoreFilePath != null ? keyStoreFilePath : ""; this.keyStorePassword = keyStorePassword != null ? keyStorePassword : ""; @@ -226,6 +231,10 @@ public PipelineShutdownOption getPipelineShutdown() { return pipelineShutdown; } + public EventConfiguration getEventConfiguration() { + return eventConfiguration; + } + @Override public PipelineExtensions getPipelineExtensions() { return pipelineExtensions; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/HeapCircuitBreakerConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/HeapCircuitBreakerConfig.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/HeapCircuitBreakerConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/HeapCircuitBreakerConfig.java index 1248177a91..ac42bb8a17 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/HeapCircuitBreakerConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/HeapCircuitBreakerConfig.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.model; +package org.opensearch.dataprepper.core.parser.model; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/MetricRegistryType.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/MetricRegistryType.java similarity index 79% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/MetricRegistryType.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/MetricRegistryType.java index 5bee5b7875..10ef2f7b0e 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/MetricRegistryType.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/MetricRegistryType.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.model; +package org.opensearch.dataprepper.core.parser.model; public enum MetricRegistryType { // TODO: capitalize enum values diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/SourceCoordinationConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/SourceCoordinationConfig.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/SourceCoordinationConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/SourceCoordinationConfig.java index 4e86bfee33..aa2632d2c6 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/parser/model/SourceCoordinationConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/parser/model/SourceCoordinationConfig.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.model; +package org.opensearch.dataprepper.core.parser.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/DefaultPeerForwarderProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/DefaultPeerForwarderProvider.java similarity index 95% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/DefaultPeerForwarderProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/DefaultPeerForwarderProvider.java index ff638ee26f..a995929c08 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/DefaultPeerForwarderProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/DefaultPeerForwarderProvider.java @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; +import org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.processor.Processor; -import org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.model.record.Record; import java.util.HashMap; import java.util.Map; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/ForwardingAuthentication.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/ForwardingAuthentication.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/ForwardingAuthentication.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/ForwardingAuthentication.java index 78ec756e90..cf069e29d6 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/ForwardingAuthentication.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/ForwardingAuthentication.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import java.util.Arrays; import java.util.HashMap; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/HashRing.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/HashRing.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/HashRing.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/HashRing.java index 3a017a691b..8f471f5d20 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/HashRing.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/HashRing.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.linecorp.armeria.client.Endpoint; -import org.opensearch.dataprepper.peerforwarder.discovery.PeerListProvider; +import org.opensearch.dataprepper.core.peerforwarder.discovery.PeerListProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/LocalModePeerForwarderProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/LocalModePeerForwarderProvider.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/LocalModePeerForwarderProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/LocalModePeerForwarderProvider.java index 6c2c4fe688..02b1dafb13 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/LocalModePeerForwarderProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/LocalModePeerForwarderProvider.java @@ -3,12 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.peerforwarder.RequiresPeerForwarding; +import org.opensearch.dataprepper.model.processor.Processor; +import org.opensearch.dataprepper.model.record.Record; import java.util.Map; import java.util.Set; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/LocalPeerForwarder.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/LocalPeerForwarder.java similarity index 91% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/LocalPeerForwarder.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/LocalPeerForwarder.java index 87d1514671..9fe8983ebe 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/LocalPeerForwarder.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/LocalPeerForwarder.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.record.Record; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerClientPool.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerClientPool.java similarity index 98% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerClientPool.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerClientPool.java index 286f739a34..65793d2174 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerClientPool.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerClientPool.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.linecorp.armeria.client.ClientBuilder; import com.linecorp.armeria.client.ClientFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarder.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarder.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarder.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarder.java index 4cef5d774c..e6fda09037 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarder.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarder.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.record.Record; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfig.java similarity index 86% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfig.java index 4cca81819d..6ef27d09ad 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfig.java @@ -3,18 +3,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; - +package org.opensearch.dataprepper.core.peerforwarder; + +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.certificate.CertificateProviderFactory; +import org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient; +import org.opensearch.dataprepper.core.peerforwarder.codec.PeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderHttpServerProvider; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderHttpService; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderServer; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderServerProxy; +import org.opensearch.dataprepper.core.peerforwarder.server.ResponseHandler; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.peerforwarder.certificate.CertificateProviderFactory; -import org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient; -import org.opensearch.dataprepper.peerforwarder.codec.PeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderHttpServerProvider; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderHttpService; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderServer; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderServerProxy; -import org.opensearch.dataprepper.peerforwarder.server.ResponseHandler; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderClientFactory.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderClientFactory.java similarity index 88% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderClientFactory.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderClientFactory.java index 5c452cfb0f..c972f79d9d 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderClientFactory.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderClientFactory.java @@ -3,13 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; +import org.opensearch.dataprepper.core.peerforwarder.certificate.CertificateProviderFactory; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.core.peerforwarder.discovery.PeerListProvider; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.certificate.CertificateProviderFactory; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; -import org.opensearch.dataprepper.peerforwarder.discovery.PeerListProvider; public class PeerForwarderClientFactory { public static final int NUM_VIRTUAL_NODES = 128; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderConfiguration.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderConfiguration.java similarity index 98% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderConfiguration.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderConfiguration.java index 359a9d1687..27a0e3c83a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderConfiguration.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderConfiguration.java @@ -3,12 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.commons.lang3.StringUtils; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; import java.time.Duration; import java.util.ArrayList; @@ -17,7 +18,7 @@ import java.util.Map; /** - * Class to hold configuration for Core Peer Forwarder in {@link org.opensearch.dataprepper.parser.model.DataPrepperConfiguration}, + * Class to hold configuration for Core Peer Forwarder in {@link DataPrepperConfiguration}, * including port, ssl, buffer, peer forwarder client and server configuration. * @since 2.0 */ diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderProvider.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderProvider.java index 40b3a03deb..341a73ef9d 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderProvider.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.processor.Processor; +import org.opensearch.dataprepper.model.record.Record; import java.util.Map; import java.util.Set; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderReceiveBuffer.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderReceiveBuffer.java similarity index 99% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderReceiveBuffer.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderReceiveBuffer.java index 0c40a2acb7..e2900e693a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderReceiveBuffer.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderReceiveBuffer.java @@ -3,19 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; +import com.google.common.base.Stopwatch; import com.google.common.util.concurrent.AtomicDouble; import org.opensearch.dataprepper.model.CheckpointState; import org.opensearch.dataprepper.model.buffer.AbstractBuffer; import org.opensearch.dataprepper.model.buffer.SizeOverflowException; import org.opensearch.dataprepper.model.record.Record; -import com.google.common.base.Stopwatch; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.AbstractMap; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwardingProcessorDecorator.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwardingProcessorDecorator.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwardingProcessorDecorator.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwardingProcessorDecorator.java index 038bdb28c5..e81c2a9730 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/PeerForwardingProcessorDecorator.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwardingProcessorDecorator.java @@ -3,19 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; +import org.apache.commons.collections.CollectionUtils; +import org.opensearch.dataprepper.core.peerforwarder.exception.EmptyPeerForwarderPluginIdentificationKeysException; +import org.opensearch.dataprepper.core.peerforwarder.exception.UnsupportedPeerForwarderPluginException; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.peerforwarder.RequiresPeerForwarding; import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.record.Record; -import org.apache.commons.collections.CollectionUtils; -import org.opensearch.dataprepper.peerforwarder.exception.EmptyPeerForwarderPluginIdentificationKeysException; -import org.opensearch.dataprepper.peerforwarder.exception.UnsupportedPeerForwarderPluginException; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/RemotePeerForwarder.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/RemotePeerForwarder.java similarity index 98% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/RemotePeerForwarder.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/RemotePeerForwarder.java index d0c01a09ab..8e2459a233 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/RemotePeerForwarder.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/RemotePeerForwarder.java @@ -3,17 +3,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.HttpStatus; +import io.micrometer.core.instrument.Counter; +import org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient; +import org.opensearch.dataprepper.core.peerforwarder.discovery.StaticPeerListProvider; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.CheckpointState; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.record.Record; -import io.micrometer.core.instrument.Counter; -import org.opensearch.dataprepper.peerforwarder.discovery.StaticPeerListProvider; -import org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/certificate/CertificateProviderFactory.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/certificate/CertificateProviderFactory.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/certificate/CertificateProviderFactory.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/certificate/CertificateProviderFactory.java index 99db5d5d0b..175c28c4e9 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/certificate/CertificateProviderFactory.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/certificate/CertificateProviderFactory.java @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.certificate; +package org.opensearch.dataprepper.core.peerforwarder.certificate; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.plugins.certificate.CertificateProvider; import org.opensearch.dataprepper.plugins.certificate.acm.ACMCertificateProvider; import org.opensearch.dataprepper.plugins.certificate.file.FileCertificateProvider; import org.opensearch.dataprepper.plugins.certificate.s3.S3CertificateProvider; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.plugins.metricpublisher.MicrometerMetricPublisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/client/PeerForwarderClient.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/client/PeerForwarderClient.java similarity index 87% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/client/PeerForwarderClient.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/client/PeerForwarderClient.java index 9acb6f505c..d76cb5b3b0 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/client/PeerForwarderClient.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/client/PeerForwarderClient.java @@ -3,20 +3,20 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.client; +package org.opensearch.dataprepper.core.peerforwarder.client; -import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; import com.linecorp.armeria.client.WebClient; import com.linecorp.armeria.common.AggregatedHttpResponse; import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.Timer; -import org.opensearch.dataprepper.peerforwarder.PeerClientPool; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderClientFactory; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.codec.PeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.core.peerforwarder.PeerClientPool; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderClientFactory; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.codec.PeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,8 +27,6 @@ import java.util.concurrent.Executors; import java.util.stream.Collectors; -import static org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration.DEFAULT_PEER_FORWARDING_URI; - public class PeerForwarderClient { private static final Logger LOG = LoggerFactory.getLogger(PeerForwarderClient.class); static final String REQUESTS = "requests"; @@ -91,7 +89,7 @@ private byte[] getSerializedJsonBytes(final Collection> records, f private CompletableFuture processHttpRequest(final WebClient client, final byte[] content) { return CompletableFuture.supplyAsync(() -> { - final CompletableFuture aggregate = client.post(DEFAULT_PEER_FORWARDING_URI, content).aggregate(); + final CompletableFuture aggregate = client.post(PeerForwarderConfiguration.DEFAULT_PEER_FORWARDING_URI, content).aggregate(); return aggregate.join(); }, executorService); } diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/JacksonPeerForwarderCodec.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/JacksonPeerForwarderCodec.java similarity index 92% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/JacksonPeerForwarderCodec.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/JacksonPeerForwarderCodec.java index 4fac8a7c2d..0ef119189d 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/JacksonPeerForwarderCodec.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/JacksonPeerForwarderCodec.java @@ -3,16 +3,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; import com.fasterxml.jackson.databind.ObjectMapper; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.core.peerforwarder.model.WireEvent; +import org.opensearch.dataprepper.core.peerforwarder.model.WireEvents; import org.opensearch.dataprepper.model.event.DefaultEventMetadata; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.trace.JacksonSpan; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; -import org.opensearch.dataprepper.peerforwarder.model.WireEvent; -import org.opensearch.dataprepper.peerforwarder.model.WireEvents; import java.io.IOException; import java.util.List; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/JavaPeerForwarderCodec.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/JavaPeerForwarderCodec.java similarity index 91% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/JavaPeerForwarderCodec.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/JavaPeerForwarderCodec.java index 97b77358ef..d90249940a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/JavaPeerForwarderCodec.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/JavaPeerForwarderCodec.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/LoggingObjectInputFilter.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/LoggingObjectInputFilter.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/LoggingObjectInputFilter.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/LoggingObjectInputFilter.java index 16de7cdb5a..59d966a199 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/LoggingObjectInputFilter.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/LoggingObjectInputFilter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodec.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodec.java similarity index 66% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodec.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodec.java index fa7783be7d..ee013865d1 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodec.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodec.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; public interface PeerForwarderCodec { byte[] serialize(PeerForwardingEvents peerForwardingEvents) throws Exception; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodecAppConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodecAppConfig.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodecAppConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodecAppConfig.java index 70c8600121..a76a0ad3c3 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodecAppConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodecAppConfig.java @@ -3,12 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -66,7 +66,7 @@ public ObjectInputFilter objectInputFilter(final PeerForwarderConfiguration peer "com.fasterxml.jackson.databind.node.NodeSerialization;" + "com.fasterxml.jackson.databind.node.ObjectNode;" + "com.fasterxml.jackson.databind.node.ArrayNode;" + - "org.opensearch.dataprepper.peerforwarder.model.*;" + + "org.opensearch.dataprepper.core.peerforwarder.model.*;" + baseModelPackage + ".event.*;" + baseModelPackage + ".trace.*;" + baseModelPackage + ".log.*;" + diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProvider.java similarity index 98% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProvider.java index 1b86adebfe..07e05accbe 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.linecorp.armeria.client.Endpoint; import com.linecorp.armeria.client.endpoint.DynamicEndpointGroup; @@ -11,8 +11,8 @@ import com.linecorp.armeria.common.CommonPools; import io.netty.channel.EventLoop; import io.netty.util.concurrent.ScheduledFuture; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.plugins.metricpublisher.MicrometerMetricPublisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DiscoveryMode.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DiscoveryMode.java similarity index 90% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DiscoveryMode.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DiscoveryMode.java index 30b165bf7f..553ee7567b 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DiscoveryMode.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DiscoveryMode.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import java.util.Objects; import java.util.function.BiFunction; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DiscoveryUtils.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DiscoveryUtils.java similarity index 86% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DiscoveryUtils.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DiscoveryUtils.java index 13b8dbccaf..7116fa6461 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DiscoveryUtils.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DiscoveryUtils.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.google.common.net.InternetDomainName; import org.apache.commons.validator.routines.InetAddressValidator; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProvider.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProvider.java index 85d73d643c..ac9021ac91 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProvider.java @@ -3,13 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.google.common.base.Preconditions; import com.linecorp.armeria.client.Endpoint; import com.linecorp.armeria.client.endpoint.dns.DnsAddressEndpointGroup; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/LocalPeerListProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/LocalPeerListProvider.java similarity index 85% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/LocalPeerListProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/LocalPeerListProvider.java index 735c5cda07..1804e1e424 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/LocalPeerListProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/LocalPeerListProvider.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.linecorp.armeria.client.Endpoint; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import java.util.Collections; import java.util.List; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/PeerListProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/PeerListProvider.java similarity index 91% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/PeerListProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/PeerListProvider.java index 3b70165196..484d88fe77 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/PeerListProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/PeerListProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.linecorp.armeria.client.Endpoint; import com.linecorp.armeria.common.util.Listenable; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProvider.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProvider.java index 4825538e1e..fd7f379217 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProvider.java @@ -3,12 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.google.common.base.Preconditions; import com.linecorp.armeria.client.Endpoint; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysException.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysException.java similarity index 89% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysException.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysException.java index 6fc939f5ef..d9fea9bc03 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysException.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysException.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.exception; +package org.opensearch.dataprepper.core.peerforwarder.exception; /** * This exception is thrown when processor which implements diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/exception/UnsupportedPeerForwarderPluginException.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/exception/UnsupportedPeerForwarderPluginException.java similarity index 70% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/exception/UnsupportedPeerForwarderPluginException.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/exception/UnsupportedPeerForwarderPluginException.java index b70f3be277..1e893ad26f 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/exception/UnsupportedPeerForwarderPluginException.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/exception/UnsupportedPeerForwarderPluginException.java @@ -3,12 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.exception; +package org.opensearch.dataprepper.core.peerforwarder.exception; + +import org.opensearch.dataprepper.core.peerforwarder.PeerForwardingProcessorDecorator; /** * This exception is thrown when processor which doesn't implement * {@link org.opensearch.dataprepper.model.peerforwarder.RequiresPeerForwarding} interface is passed to - * {@link org.opensearch.dataprepper.peerforwarder.PeerForwardingProcessorDecorator}. + * {@link PeerForwardingProcessorDecorator}. * * @since 2.0 */ diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/PeerForwardingEvents.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/PeerForwardingEvents.java similarity index 89% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/PeerForwardingEvents.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/PeerForwardingEvents.java index 5b70f4ce72..cced0228b3 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/PeerForwardingEvents.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/PeerForwardingEvents.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.model; +package org.opensearch.dataprepper.core.peerforwarder.model; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarder; import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.peerforwarder.PeerForwarder; import java.io.Serializable; import java.util.List; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/WireEvent.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/WireEvent.java similarity index 91% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/WireEvent.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/WireEvent.java index c824cbff10..0d447ce085 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/WireEvent.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/WireEvent.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.model; +package org.opensearch.dataprepper.core.peerforwarder.model; -import org.opensearch.dataprepper.peerforwarder.PeerForwarder; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarder; import java.time.Instant; import java.util.Map; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/WireEvents.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/WireEvents.java similarity index 88% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/WireEvents.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/WireEvents.java index 09183e0508..8a07e93776 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/model/WireEvents.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/model/WireEvents.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.model; +package org.opensearch.dataprepper.core.peerforwarder.model; -import org.opensearch.dataprepper.peerforwarder.PeerForwarder; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarder; import java.util.List; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/NoOpPeerForwarderServer.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/NoOpPeerForwarderServer.java similarity index 88% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/NoOpPeerForwarderServer.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/NoOpPeerForwarderServer.java index ed66c1fc37..20bd7459a0 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/NoOpPeerForwarderServer.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/NoOpPeerForwarderServer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; /** * Class to handle NoOp Peer Forwarder server if no peers are configured diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServerProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServerProvider.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServerProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServerProvider.java index aab39c2e3f..6e347e3c75 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServerProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServerProvider.java @@ -3,15 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import com.linecorp.armeria.server.Server; import com.linecorp.armeria.server.ServerBuilder; import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.util.FingerprintTrustManagerFactory; -import org.opensearch.dataprepper.peerforwarder.ForwardingAuthentication; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.certificate.CertificateProviderFactory; +import org.opensearch.dataprepper.core.peerforwarder.ForwardingAuthentication; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.certificate.CertificateProviderFactory; import org.opensearch.dataprepper.plugins.certificate.CertificateProvider; import org.opensearch.dataprepper.plugins.certificate.model.Certificate; import org.slf4j.Logger; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpService.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpService.java similarity index 92% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpService.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpService.java index bb2d32f931..125ea249a6 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpService.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpService.java @@ -3,24 +3,24 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; -import io.micrometer.core.instrument.Counter; -import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; import com.linecorp.armeria.common.AggregatedHttpRequest; import com.linecorp.armeria.common.HttpData; import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.server.annotation.Post; +import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.Timer; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderReceiveBuffer; -import org.opensearch.dataprepper.peerforwarder.codec.PeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderReceiveBuffer; +import org.opensearch.dataprepper.core.peerforwarder.codec.PeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServer.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServer.java similarity index 86% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServer.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServer.java index 3286c6c31b..0c30b3c972 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServer.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; /** * Interface to start and stop Peer Forwarder server diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServerProxy.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServerProxy.java similarity index 87% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServerProxy.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServerProxy.java index f0059687ce..635d0317f9 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServerProxy.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServerProxy.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import com.linecorp.armeria.server.Server; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; public class PeerForwarderServerProxy implements PeerForwarderServer { private final PeerForwarderHttpServerProvider peerForwarderHttpServerProvider; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/RemotePeerForwarderServer.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/RemotePeerForwarderServer.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/RemotePeerForwarderServer.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/RemotePeerForwarderServer.java index dc0b796bbf..d26c0b3927 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/RemotePeerForwarderServer.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/RemotePeerForwarderServer.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import com.linecorp.armeria.server.Server; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/ResponseHandler.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/ResponseHandler.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/ResponseHandler.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/ResponseHandler.java index e48808d731..224fa6d7ef 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/peerforwarder/server/ResponseHandler.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/peerforwarder/server/ResponseHandler.java @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; -import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.model.buffer.SizeOverflowException; import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.MediaType; import io.micrometer.core.instrument.Counter; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.buffer.SizeOverflowException; import java.util.Objects; import java.util.concurrent.TimeoutException; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/Pipeline.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/Pipeline.java similarity index 89% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/Pipeline.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/Pipeline.java index 29bb69db46..b5d3f812cf 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/Pipeline.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/Pipeline.java @@ -3,10 +3,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import com.google.common.base.Preconditions; -import org.opensearch.dataprepper.acknowledgements.InactiveAcknowledgementSetManager; +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.core.acknowledgements.InactiveAcknowledgementSetManager; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; +import org.opensearch.dataprepper.core.pipeline.common.PipelineThreadFactory; +import org.opensearch.dataprepper.core.pipeline.common.PipelineThreadPoolExecutor; +import org.opensearch.dataprepper.core.pipeline.router.Router; +import org.opensearch.dataprepper.core.pipeline.router.RouterCopyRecordStrategy; +import org.opensearch.dataprepper.core.pipeline.router.RouterGetRecordStrategy; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactory; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.EventFactory; @@ -20,13 +28,6 @@ import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourcePartition; import org.opensearch.dataprepper.model.source.coordinator.enhanced.UsesEnhancedSourceCoordination; -import org.opensearch.dataprepper.parser.DataFlowComponent; -import org.opensearch.dataprepper.pipeline.common.PipelineThreadFactory; -import org.opensearch.dataprepper.pipeline.common.PipelineThreadPoolExecutor; -import org.opensearch.dataprepper.pipeline.router.Router; -import org.opensearch.dataprepper.pipeline.router.RouterCopyRecordStrategy; -import org.opensearch.dataprepper.pipeline.router.RouterGetRecordStrategy; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +42,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.stream.Collectors; @@ -55,7 +55,7 @@ public class Pipeline { private static final Logger LOG = LoggerFactory.getLogger(Pipeline.class); private static final int SINK_LOGGING_FREQUENCY = (int) Duration.ofSeconds(60).toMillis(); - private volatile AtomicBoolean stopRequested; + private final PipelineShutdown pipelineShutdown; private final String name; private final Source source; @@ -137,7 +137,7 @@ public Pipeline( this.sinkExecutorService = PipelineThreadPoolExecutor.newFixedThreadPool(processorThreads, new PipelineThreadFactory(format("%s-sink-worker", name)), this); - stopRequested = new AtomicBoolean(false); + this.pipelineShutdown = new PipelineShutdown(name, buffer); } AcknowledgementSetManager getAcknowledgementSetManager() { @@ -176,7 +176,11 @@ public Collection getSinks() { } public boolean isStopRequested() { - return stopRequested.get(); + return pipelineShutdown.isStopRequested(); + } + + public boolean isForceStopReadingBuffers() { + return pipelineShutdown.isForceStopReadingBuffers(); } public Duration getPeerForwarderDrainTimeout() { @@ -267,6 +271,10 @@ public void execute() { } } + public synchronized void shutdown() { + shutdown(DataPrepperShutdownOptions.defaultOptions()); + } + /** * Initiates shutdown of the pipeline by: * 1. Stopping the source to prevent new items from being consumed @@ -275,20 +283,24 @@ public void execute() { * 4. Stopping the ProcessWorkers if they are unable to exit gracefully * 5. Shutting down processors and sinks * 6. Stopping the sink ExecutorService + * + * @param dataPrepperShutdownOptions options for shutdown behavior + * @see DataPrepperShutdownOptions */ - public synchronized void shutdown() { + public synchronized void shutdown(final DataPrepperShutdownOptions dataPrepperShutdownOptions) { LOG.info("Pipeline [{}] - Received shutdown signal with buffer drain timeout {}, processor shutdown timeout {}, " + "and sink shutdown timeout {}. Initiating the shutdown process", name, buffer.getDrainTimeout(), processorShutdownTimeout, sinkShutdownTimeout); try { source.stop(); - stopRequested.set(true); } catch (Exception ex) { LOG.error("Pipeline [{}] - Encountered exception while stopping the source, " + "proceeding with termination of process workers", name, ex); } - shutdownExecutorService(processorExecutorService, buffer.getDrainTimeout().toMillis() + processorShutdownTimeout.toMillis(), "processor"); + pipelineShutdown.shutdown(dataPrepperShutdownOptions); + + shutdownExecutorService(processorExecutorService, pipelineShutdown.getBufferDrainTimeout().plus(processorShutdownTimeout), "processor"); processorSets.forEach(processorSet -> processorSet.forEach(Processor::shutdown)); buffer.shutdown(); @@ -297,7 +309,7 @@ public synchronized void shutdown() { .map(DataFlowComponent::getComponent) .forEach(Sink::shutdown); - shutdownExecutorService(sinkExecutorService, sinkShutdownTimeout.toMillis(), "sink"); + shutdownExecutorService(sinkExecutorService, sinkShutdownTimeout, "sink"); LOG.info("Pipeline [{}] - Pipeline fully shutdown.", name); @@ -312,13 +324,13 @@ public void removeShutdownObserver(final PipelineObserver pipelineObserver) { observers.remove(pipelineObserver); } - private void shutdownExecutorService(final ExecutorService executorService, final long timeoutForTerminationInMillis, final String workerName) { + private void shutdownExecutorService(final ExecutorService executorService, final Duration timeoutForTermination, final String workerName) { LOG.info("Pipeline [{}] - Shutting down {} process workers.", name, workerName); executorService.shutdown(); try { - if (!executorService.awaitTermination(timeoutForTerminationInMillis, TimeUnit.MILLISECONDS)) { - LOG.warn("Pipeline [{}] - Workers did not terminate in time, forcing termination of {} workers.", name, workerName); + if (!executorService.awaitTermination(timeoutForTermination.toMillis(), TimeUnit.MILLISECONDS)) { + LOG.warn("Pipeline [{}] - Workers did not terminate in {}, forcing termination of {} workers.", name, timeoutForTermination, workerName); executorService.shutdownNow(); } } catch (InterruptedException ex) { diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineConnector.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineConnector.java similarity index 98% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineConnector.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineConnector.java index f19ff36697..08bcfab642 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineConnector.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineConnector.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.record.Record; @@ -21,7 +21,6 @@ /** * PipelineConnector is a special type of Plugin which connects two pipelines acting both as Sink and Source. * - * @param */ public final class PipelineConnector> implements Source, Sink { private static final Logger LOG = LoggerFactory.getLogger(PipelineConnector.class); diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineObserver.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineObserver.java similarity index 82% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineObserver.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineObserver.java index 4d07deede9..8c2fc37c7a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineObserver.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineObserver.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; /** * Allows an observer to observe major changes in pipelines. diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdown.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdown.java new file mode 100644 index 0000000000..fcb44a544b --- /dev/null +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdown.java @@ -0,0 +1,81 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.pipeline; + +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; + +class PipelineShutdown { + private static final Logger LOG = LoggerFactory.getLogger(PipelineShutdown.class); + + private final AtomicBoolean stopRequested = new AtomicBoolean(false); + private final Duration pipelineConfiguredBufferDrainTimeout; + private final Clock clock; + private final String pipelineName; + private Instant shutdownRequestedAt; + private Instant forceStopReadingBuffersAt; + private Duration bufferDrainTimeoutOverride; + private Duration bufferDrainTimeout; + + PipelineShutdown(final String pipelineName, final Buffer buffer) { + this(pipelineName, buffer, Clock.systemDefaultZone()); + } + + PipelineShutdown(String pipelineName, final Buffer buffer, final Clock clock) { + this.pipelineName = pipelineName; + pipelineConfiguredBufferDrainTimeout = Objects.requireNonNull(buffer.getDrainTimeout()); + bufferDrainTimeout = pipelineConfiguredBufferDrainTimeout; + this.clock = clock; + } + + public void shutdown(final DataPrepperShutdownOptions dataPrepperShutdownOptions) { + final boolean stopPreviouslyRequested = stopRequested.get(); + if(stopPreviouslyRequested) { + return; + } + + stopRequested.set(true); + shutdownRequestedAt = now(); + + final Duration bufferReadTimeout = dataPrepperShutdownOptions.getBufferReadTimeout(); + if(bufferReadTimeout != null) { + forceStopReadingBuffersAt = shutdownRequestedAt.plus(bufferReadTimeout); + } + + final Duration bufferDrainTimeoutOverride = dataPrepperShutdownOptions.getBufferDrainTimeout(); + if(bufferDrainTimeoutOverride != null) { + this.bufferDrainTimeoutOverride = bufferDrainTimeoutOverride; + bufferDrainTimeout = bufferDrainTimeoutOverride; + } + + LOG.info("Started shutdown for pipeline {}. Requested at {}. Force stop reading buffers at {}. The buffer drain timeout to use is {}", + pipelineName, shutdownRequestedAt, forceStopReadingBuffersAt, bufferDrainTimeout); + } + + boolean isStopRequested() { + return stopRequested.get(); + } + + boolean isForceStopReadingBuffers() { + return forceStopReadingBuffersAt != null && now().isAfter(forceStopReadingBuffersAt); + } + + public Duration getBufferDrainTimeout() { + return bufferDrainTimeout; + } + + private Instant now() { + return Instant.ofEpochMilli(clock.millis()); + } +} diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineShutdownAppConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownAppConfig.java similarity index 82% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineShutdownAppConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownAppConfig.java index 510ad02cc6..9c4b04d2ff 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineShutdownAppConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownAppConfig.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineShutdownOption.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownOption.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineShutdownOption.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownOption.java index d700100e02..adf06dd83e 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelineShutdownOption.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownOption.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelinesProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelinesProvider.java similarity index 59% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelinesProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelinesProvider.java index e948bd176a..15ebc4962f 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/PipelinesProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/PipelinesProvider.java @@ -3,7 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; + +import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import java.util.Map; @@ -12,4 +14,5 @@ */ public interface PipelinesProvider { Map getTransformationPipelines(); + PipelinesDataFlowModel getPipelinesDataFlowModel(); } diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/ProcessWorker.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/ProcessWorker.java similarity index 73% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/ProcessWorker.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/ProcessWorker.java index b5538dfe73..e313430b49 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/ProcessWorker.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/ProcessWorker.java @@ -3,9 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import io.micrometer.core.instrument.Counter; +import org.opensearch.dataprepper.core.pipeline.common.FutureHelper; +import org.opensearch.dataprepper.core.pipeline.common.FutureHelperResult; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.CheckpointState; import org.opensearch.dataprepper.model.buffer.Buffer; @@ -15,8 +17,6 @@ import org.opensearch.dataprepper.model.event.InternalEventHandle; import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.pipeline.common.FutureHelper; -import org.opensearch.dataprepper.pipeline.common.FutureHelperResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,37 +60,41 @@ public void run() { while (!pipeline.isStopRequested()) { doRun(); } - LOG.info("Processor shutdown phase 1 complete."); + executeShutdownProcess(); + } catch (final Exception e) { + LOG.error("Encountered exception during pipeline {} processing", pipeline.getName(), e); + } + } - // Phase 2 - execute until buffers are empty - LOG.info("Beginning processor shutdown phase 2, iterating until buffers empty."); - while (!readBuffer.isEmpty()) { - doRun(); - } - LOG.info("Processor shutdown phase 2 complete."); + private void executeShutdownProcess() { + LOG.info("Processor shutdown phase 1 complete."); - // Phase 3 - execute until peer forwarder drain period expires (best effort to process all peer forwarder data) - final long drainTimeoutExpiration = System.currentTimeMillis() + pipeline.getPeerForwarderDrainTimeout().toMillis(); - LOG.info("Beginning processor shutdown phase 3, iterating until {}.", drainTimeoutExpiration); - while (System.currentTimeMillis() < drainTimeoutExpiration) { - doRun(); - } - LOG.info("Processor shutdown phase 3 complete."); + // Phase 2 - execute until buffers are empty + LOG.info("Beginning processor shutdown phase 2, iterating until buffers empty."); + while (!isBufferReadyForShutdown()) { + doRun(); + } + LOG.info("Processor shutdown phase 2 complete."); - // Phase 4 - prepare processors for shutdown - LOG.info("Beginning processor shutdown phase 4, preparing processors for shutdown."); - processors.forEach(Processor::prepareForShutdown); - LOG.info("Processor shutdown phase 4 complete."); + // Phase 3 - execute until peer forwarder drain period expires (best effort to process all peer forwarder data) + final long drainTimeoutExpiration = System.currentTimeMillis() + pipeline.getPeerForwarderDrainTimeout().toMillis(); + LOG.info("Beginning processor shutdown phase 3, iterating until {}.", drainTimeoutExpiration); + while (System.currentTimeMillis() < drainTimeoutExpiration) { + doRun(); + } + LOG.info("Processor shutdown phase 3 complete."); - // Phase 5 - execute until processors are ready to shutdown - LOG.info("Beginning processor shutdown phase 5, iterating until processors are ready to shutdown."); - while (!areComponentsReadyForShutdown()) { - doRun(); - } - LOG.info("Processor shutdown phase 5 complete."); - } catch (final Exception e) { - LOG.error("Encountered exception during pipeline {} processing", pipeline.getName(), e); + // Phase 4 - prepare processors for shutdown + LOG.info("Beginning processor shutdown phase 4, preparing processors for shutdown."); + processors.forEach(Processor::prepareForShutdown); + LOG.info("Processor shutdown phase 4 complete."); + + // Phase 5 - execute until processors are ready to shutdown + LOG.info("Beginning processor shutdown phase 5, iterating until processors are ready to shutdown."); + while (!areComponentsReadyForShutdown()) { + doRun(); } + LOG.info("Processor shutdown phase 5 complete."); } private void processAcknowledgements(List inputEvents, Collection> outputRecords) { @@ -153,11 +157,19 @@ private void doRun() { } private boolean areComponentsReadyForShutdown() { - return readBuffer.isEmpty() && processors.stream() + return isBufferReadyForShutdown() && processors.stream() .map(Processor::isReadyForShutdown) .allMatch(result -> result == true); } + private boolean isBufferReadyForShutdown() { + final boolean isBufferEmpty = readBuffer.isEmpty(); + final boolean forceStopReadingBuffers = pipeline.isForceStopReadingBuffers(); + final boolean isBufferReadyForShutdown = isBufferEmpty || forceStopReadingBuffers; + LOG.debug("isBufferReadyForShutdown={}, isBufferEmpty={}, forceStopReadingBuffers={}", isBufferReadyForShutdown, isBufferEmpty, forceStopReadingBuffers); + return isBufferReadyForShutdown; + } + /** * TODO Add isolator pattern - Fail if one of the Sink fails [isolator Pattern] * Uses the pipeline method to publish to sinks, waits for each of the sink result to be true before attempting to diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/FutureHelper.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelper.java similarity index 95% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/FutureHelper.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelper.java index c7c17c88ba..74dabfe251 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/FutureHelper.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelper.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/FutureHelperResult.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperResult.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/FutureHelperResult.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperResult.java index da3bb1ce6a..5769629823 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/FutureHelperResult.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperResult.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; import java.util.Collections; import java.util.List; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadFactory.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadFactory.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadFactory.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadFactory.java index 707cf61885..3df65890f4 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadFactory.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadFactory.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadPoolExecutor.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadPoolExecutor.java similarity index 92% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadPoolExecutor.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadPoolExecutor.java index 673cb230d2..9ef060ea3e 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadPoolExecutor.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadPoolExecutor.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; -import org.opensearch.dataprepper.pipeline.Pipeline; +import org.opensearch.dataprepper.core.pipeline.Pipeline; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,8 +56,9 @@ public static PipelineThreadPoolExecutor newFixedThreadPool( * of execution of the given processWorker Runnable. This method is invoked by the thread that executed the task. If * non-null, the Throwable is the uncaught {@code RuntimeException} or {@code Error} that caused execution to * terminate abruptly. - * @param runnable - * @param throwable + * @param runnable the processor worker that has been executed + * @param throwable the exception that caused the termination, or null if execution completed normally or has not yet + * terminated */ @Override public void afterExecute(final Runnable runnable, final Throwable throwable) { diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/DataFlowComponentRouter.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/DataFlowComponentRouter.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/DataFlowComponentRouter.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/DataFlowComponentRouter.java index 4e5c89cc29..e65f4cbf44 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/DataFlowComponentRouter.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/DataFlowComponentRouter.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.parser.DataFlowComponent; import java.util.ArrayList; import java.util.Collection; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouteEventEvaluator.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouteEventEvaluator.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouteEventEvaluator.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouteEventEvaluator.java index 6d7c1ce3b0..a2f1cf6151 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouteEventEvaluator.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouteEventEvaluator.java @@ -3,12 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.model.configuration.ConditionalRoute; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/Router.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/Router.java similarity index 95% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/Router.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/Router.java index 16a280f39c..0005e9ae73 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/Router.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/Router.java @@ -3,17 +3,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.parser.DataFlowComponent; +import org.opensearch.dataprepper.model.record.Record; import java.util.Collection; -import java.util.Map; -import java.util.Set; import java.util.HashSet; +import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Consumer; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterAppConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterAppConfig.java similarity index 89% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterAppConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterAppConfig.java index dbfca03124..ff50366c7d 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterAppConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterAppConfig.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.springframework.context.annotation.Bean; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterCopyRecordStrategy.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterCopyRecordStrategy.java similarity index 89% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterCopyRecordStrategy.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterCopyRecordStrategy.java index b4982c5b07..589ec7eda3 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterCopyRecordStrategy.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterCopyRecordStrategy.java @@ -3,31 +3,28 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.parser.DataFlowComponent; -import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.pipeline.PipelineConnector; - -import org.opensearch.dataprepper.model.trace.Span; -import org.opensearch.dataprepper.model.trace.JacksonSpan; -import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.core.acknowledgements.InactiveAcknowledgementSetManager; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; +import org.opensearch.dataprepper.core.pipeline.PipelineConnector; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.event.EventBuilder; import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.event.EventHandle; -import org.opensearch.dataprepper.model.event.InternalEventHandle; -import org.opensearch.dataprepper.model.event.EventBuilder; import org.opensearch.dataprepper.model.event.EventMetadata; -import org.opensearch.dataprepper.model.event.DefaultEventHandle; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; -import org.opensearch.dataprepper.acknowledgements.InactiveAcknowledgementSetManager; +import org.opensearch.dataprepper.model.event.InternalEventHandle; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.trace.JacksonSpan; +import org.opensearch.dataprepper.model.trace.Span; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.HashSet; public class RouterCopyRecordStrategy implements RouterGetRecordStrategy { private Set routedRecords; @@ -97,13 +94,13 @@ public Record getRecord(final Record record) { final Event recordEvent = (Event) record.getData(); JacksonEvent newRecordEvent; Record newRecord; - DefaultEventHandle eventHandle = (DefaultEventHandle)recordEvent.getEventHandle(); - if (eventHandle != null && eventHandle.getAcknowledgementSet() != null) { + InternalEventHandle internalHandle = (InternalEventHandle)recordEvent.getEventHandle(); + if (internalHandle != null && internalHandle.hasAcknowledgementSet()) { final EventMetadata eventMetadata = recordEvent.getMetadata(); final EventBuilder eventBuilder = (EventBuilder) eventFactory.eventBuilder(EventBuilder.class).withEventMetadata(eventMetadata).withData(recordEvent.toMap()); newRecordEvent = (JacksonEvent) eventBuilder.build(); - eventHandle.getAcknowledgementSet().add(newRecordEvent); + internalHandle.addEventHandle(newRecordEvent.getEventHandle()); newRecord = new Record<>(newRecordEvent); acquireEventReference(newRecord); } else { diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterFactory.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterFactory.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterFactory.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterFactory.java index 2c7c81150b..c8b3b42bf3 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterFactory.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterFactory.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.model.configuration.ConditionalRoute; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.model.configuration.ConditionalRoute; import java.util.Objects; import java.util.Set; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterGetRecordStrategy.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterGetRecordStrategy.java similarity index 85% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterGetRecordStrategy.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterGetRecordStrategy.java index 184e6b1687..f1345a62ce 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/router/RouterGetRecordStrategy.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/router/RouterGetRecordStrategy.java @@ -3,9 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; import org.opensearch.dataprepper.model.record.Record; + import java.util.Collection; public interface RouterGetRecordStrategy { diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/CloudWatchMeterRegistryProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/CloudWatchMeterRegistryProvider.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/CloudWatchMeterRegistryProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/CloudWatchMeterRegistryProvider.java index beaca0ff3f..8eab4296af 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/CloudWatchMeterRegistryProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/CloudWatchMeterRegistryProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import io.micrometer.cloudwatch2.CloudWatchConfig; import io.micrometer.cloudwatch2.CloudWatchMeterRegistry; @@ -46,6 +46,7 @@ public CloudWatchMeterRegistryProvider( /** * Returns the CloudWatchMeterRegistry created using the default aws credentials + * @return CloudWatchMeterRegistry */ public CloudWatchMeterRegistry getCloudWatchMeterRegistry() { return this.cloudWatchMeterRegistry; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/DataPrepperCoreAuthenticationProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperCoreAuthenticationProvider.java similarity index 92% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/DataPrepperCoreAuthenticationProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperCoreAuthenticationProvider.java index 7b1f1510bd..9438213cd4 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/DataPrepperCoreAuthenticationProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperCoreAuthenticationProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.sun.net.httpserver.Authenticator; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/DataPrepperServer.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperServer.java similarity index 91% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/DataPrepperServer.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperServer.java index 3158cde82c..a67875acb5 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/DataPrepperServer.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperServer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.HttpContext; @@ -30,6 +30,7 @@ public class DataPrepperServer { private static final Logger LOG = LoggerFactory.getLogger(DataPrepperServer.class); private final HttpServerProvider serverProvider; private final ListPipelinesHandler listPipelinesHandler; + private final GetPipelinesHandler getPipelinesHandler; private final ShutdownHandler shutdownHandler; private final PrometheusMeterRegistry prometheusMeterRegistry; private final Authenticator authenticator; @@ -41,12 +42,14 @@ public DataPrepperServer( final HttpServerProvider serverProvider, final ListPipelinesHandler listPipelinesHandler, final ShutdownHandler shutdownHandler, + final GetPipelinesHandler getPipelinesHandler, @Autowired(required = false) @Nullable final PrometheusMeterRegistry prometheusMeterRegistry, @Autowired(required = false) @Nullable final Authenticator authenticator ) { this.serverProvider = serverProvider; this.listPipelinesHandler = listPipelinesHandler; this.shutdownHandler = shutdownHandler; + this.getPipelinesHandler = getPipelinesHandler; this.prometheusMeterRegistry = prometheusMeterRegistry; this.authenticator = authenticator; executorService = Executors.newFixedThreadPool(3); @@ -67,6 +70,7 @@ private HttpServer createServer() { createContext(server, listPipelinesHandler, authenticator, "/list"); createContext(server, shutdownHandler, authenticator, "/shutdown"); + createContext(server, getPipelinesHandler, authenticator, "/pipelines"); if (prometheusMeterRegistry != null) { final PrometheusMetricsHandler prometheusMetricsHandler = new PrometheusMetricsHandler(prometheusMeterRegistry); diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/GetPipelinesHandler.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/GetPipelinesHandler.java new file mode 100644 index 0000000000..8120ad9979 --- /dev/null +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/GetPipelinesHandler.java @@ -0,0 +1,56 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.pipeline.server; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import org.opensearch.dataprepper.core.pipeline.PipelinesProvider; +import org.opensearch.dataprepper.model.configuration.PipelineModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.ws.rs.HttpMethod; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.util.ArrayList; +import java.util.List; + +public class GetPipelinesHandler implements HttpHandler { + + private final PipelinesProvider pipelinesProvider; + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private final Logger LOG = LoggerFactory.getLogger(GetPipelinesHandler.class); + + public GetPipelinesHandler(final PipelinesProvider pipelinesProvider) { + this.pipelinesProvider = pipelinesProvider; + } + + @Override + public void handle(final HttpExchange exchange) throws IOException { + String requestMethod = exchange.getRequestMethod(); + if (!requestMethod.equals(HttpMethod.GET)) { + exchange.sendResponseHeaders(HttpURLConnection.HTTP_BAD_METHOD, 0); + exchange.getResponseBody().close(); + return; + } + + try { + List pipelineModels = new ArrayList<>(pipelinesProvider.getPipelinesDataFlowModel().getPipelines().values()); + + final byte[] response = OBJECT_MAPPER.writeValueAsString(pipelineModels).getBytes(); + + exchange.getResponseHeaders().add("Content-Type", "text/plain; charset=UTF-8"); + exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.length); + exchange.getResponseBody().write(response); + } catch (final Exception e) { + LOG.error("Caught exception listing pipelines", e); + exchange.sendResponseHeaders(HttpURLConnection.HTTP_INTERNAL_ERROR, 0); + } finally { + exchange.getResponseBody().close(); + } + } +} diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/HttpBasicAuthenticationConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/HttpBasicAuthenticationConfig.java similarity index 93% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/HttpBasicAuthenticationConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/HttpBasicAuthenticationConfig.java index 1abd774489..748bc608d9 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/HttpBasicAuthenticationConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/HttpBasicAuthenticationConfig.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/HttpServerProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/HttpServerProvider.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/HttpServerProvider.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/HttpServerProvider.java index 1d470bf03a..c65577d286 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/HttpServerProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/HttpServerProvider.java @@ -3,13 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.HttpsConfigurator; import com.sun.net.httpserver.HttpsParameters; import com.sun.net.httpserver.HttpsServer; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/ListPipelinesHandler.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/ListPipelinesHandler.java similarity index 95% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/ListPipelinesHandler.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/ListPipelinesHandler.java index ab933b6c69..fed53aff9a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/ListPipelinesHandler.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/ListPipelinesHandler.java @@ -3,12 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.fasterxml.jackson.databind.ObjectMapper; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; -import org.opensearch.dataprepper.pipeline.PipelinesProvider; +import org.opensearch.dataprepper.core.pipeline.PipelinesProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/PrometheusMetricsHandler.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/PrometheusMetricsHandler.java similarity index 97% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/PrometheusMetricsHandler.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/PrometheusMetricsHandler.java index 0af3f82592..5f5d150f3d 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/PrometheusMetricsHandler.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/PrometheusMetricsHandler.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/ShutdownHandler.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/ShutdownHandler.java new file mode 100644 index 0000000000..3b1d9fdc5c --- /dev/null +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/ShutdownHandler.java @@ -0,0 +1,85 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.pipeline.server; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import org.apache.http.NameValuePair; +import org.apache.http.client.utils.URLEncodedUtils; +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.core.DataPrepper; +import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.ws.rs.HttpMethod; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URI; +import java.nio.charset.Charset; +import java.util.List; + +/** + * HttpHandler to handle requests to shut down the Data Prepper instance + */ +public class ShutdownHandler implements HttpHandler { + private final DataPrepper dataPrepper; + private static final Logger LOG = LoggerFactory.getLogger(ShutdownHandler.class); + + public ShutdownHandler(final DataPrepper dataPrepper) { + this.dataPrepper = dataPrepper; + } + + @Override + public void handle(final HttpExchange exchange) throws IOException { + final String requestMethod = exchange.getRequestMethod(); + if (!requestMethod.equals(HttpMethod.POST)) { + exchange.sendResponseHeaders(HttpURLConnection.HTTP_BAD_METHOD, 0); + exchange.getResponseBody().close(); + return; + } + + try { + if(LOG.isInfoEnabled()) { + LOG.info("Received HTTP shutdown request to shutdown Data Prepper. Shutdown pipelines and server. User-Agent='{}'", + exchange.getRequestHeaders().getFirst("User-Agent")); + } + final DataPrepperShutdownOptions dataPrepperShutdownOptions = mapShutdownOptions(exchange.getRequestURI()); + dataPrepper.shutdownPipelines(dataPrepperShutdownOptions); + exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0); + } catch (final Exception e) { + LOG.error("Caught exception shutting down data prepper", e); + exchange.sendResponseHeaders(HttpURLConnection.HTTP_INTERNAL_ERROR, 0); + } finally { + exchange.getResponseBody().close(); + dataPrepper.shutdownServers(); + } + } + + private DataPrepperShutdownOptions mapShutdownOptions(final URI requestURI) { + final List queryParams = URLEncodedUtils.parse(requestURI, Charset.defaultCharset()); + + DataPrepperShutdownOptions.Builder shutdownOptionsBuilder + = DataPrepperShutdownOptions.builder(); + + for (final NameValuePair queryParam : queryParams) { + final String value = queryParam.getValue(); + switch(queryParam.getName()) { + case "bufferReadTimeout": + shutdownOptionsBuilder = + shutdownOptionsBuilder.withBufferReadTimeout(DataPrepperDurationParser.parse(value)); + break; + case "bufferDrainTimeout": + shutdownOptionsBuilder = + shutdownOptionsBuilder.withBufferDrainTimeout(DataPrepperDurationParser.parse(value)); + break; + default: + LOG.warn("Unrecognized query parameter '{}'", queryParam.getName()); + } + } + return shutdownOptionsBuilder.build(); + } +} diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/SslUtil.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/SslUtil.java similarity index 96% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/SslUtil.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/SslUtil.java index 521fc71772..a5f68397ea 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/SslUtil.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/SslUtil.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/config/DataPrepperServerConfiguration.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/config/DataPrepperServerConfiguration.java similarity index 80% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/config/DataPrepperServerConfiguration.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/config/DataPrepperServerConfiguration.java index f2767d33f0..e1a390715a 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/config/DataPrepperServerConfiguration.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/pipeline/server/config/DataPrepperServerConfiguration.java @@ -3,17 +3,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server.config; +package org.opensearch.dataprepper.core.pipeline.server.config; -import org.opensearch.dataprepper.DataPrepper; +import com.sun.net.httpserver.Authenticator; +import org.opensearch.dataprepper.core.DataPrepper; +import org.opensearch.dataprepper.core.pipeline.PipelinesProvider; +import org.opensearch.dataprepper.core.pipeline.server.DataPrepperCoreAuthenticationProvider; +import org.opensearch.dataprepper.core.pipeline.server.GetPipelinesHandler; +import org.opensearch.dataprepper.core.pipeline.server.ListPipelinesHandler; +import org.opensearch.dataprepper.core.pipeline.server.ShutdownHandler; import org.opensearch.dataprepper.model.configuration.PluginModel; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.pipeline.PipelinesProvider; -import org.opensearch.dataprepper.pipeline.server.DataPrepperCoreAuthenticationProvider; -import org.opensearch.dataprepper.pipeline.server.ListPipelinesHandler; -import org.opensearch.dataprepper.pipeline.server.ShutdownHandler; -import com.sun.net.httpserver.Authenticator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -74,4 +75,9 @@ public ListPipelinesHandler listPipelinesHandler(final PipelinesProvider pipelin public ShutdownHandler shutdownHandler(final DataPrepper dataPrepper) { return new ShutdownHandler(dataPrepper); } + + @Bean + public GetPipelinesHandler GetPipelinesHandler(final PipelinesProvider pipelinesProvider) { + return new GetPipelinesHandler(pipelinesProvider); + } } diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/LeaseBasedSourceCoordinator.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/LeaseBasedSourceCoordinator.java similarity index 99% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/LeaseBasedSourceCoordinator.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/LeaseBasedSourceCoordinator.java index b66edb496a..77192267bb 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/LeaseBasedSourceCoordinator.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/LeaseBasedSourceCoordinator.java @@ -3,12 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination; +package org.opensearch.dataprepper.core.sourcecoordination; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import io.micrometer.core.instrument.Counter; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.source.SourceCoordinationStore; import org.opensearch.dataprepper.model.source.coordinator.PartitionIdentifier; @@ -20,7 +21,6 @@ import org.opensearch.dataprepper.model.source.coordinator.exceptions.PartitionNotOwnedException; import org.opensearch.dataprepper.model.source.coordinator.exceptions.PartitionUpdateException; import org.opensearch.dataprepper.model.source.coordinator.exceptions.UninitializedSourceCoordinatorException; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/PartitionManager.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/PartitionManager.java similarity index 92% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/PartitionManager.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/PartitionManager.java index 4a8b9ef1c6..c6e980359c 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/PartitionManager.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/PartitionManager.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination; +package org.opensearch.dataprepper.core.sourcecoordination; import org.opensearch.dataprepper.model.source.coordinator.SourcePartition; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorAppConfig.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorAppConfig.java similarity index 83% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorAppConfig.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorAppConfig.java index 7df88dbde7..eceeeb3ce2 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorAppConfig.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorAppConfig.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination; +package org.opensearch.dataprepper.core.sourcecoordination; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorFactory.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorFactory.java similarity index 94% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorFactory.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorFactory.java index d98e447339..ccfcb971c6 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorFactory.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorFactory.java @@ -3,17 +3,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination; +package org.opensearch.dataprepper.core.sourcecoordination; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; +import org.opensearch.dataprepper.core.sourcecoordination.enhanced.EnhancedLeaseBasedSourceCoordinator; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.model.source.coordinator.SourceCoordinator; import org.opensearch.dataprepper.model.source.SourceCoordinationStore; +import org.opensearch.dataprepper.model.source.coordinator.SourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.SourcePartitionStoreItem; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourcePartition; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; -import org.opensearch.dataprepper.sourcecoordination.enhanced.EnhancedLeaseBasedSourceCoordinator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinator.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinator.java similarity index 98% rename from data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinator.java rename to data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinator.java index a07706152a..8c52910a0d 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinator.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/core/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinator.java @@ -3,15 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination.enhanced; +package org.opensearch.dataprepper.core.sourcecoordination.enhanced; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.source.SourceCoordinationStore; import org.opensearch.dataprepper.model.source.coordinator.SourcePartitionStatus; import org.opensearch.dataprepper.model.source.coordinator.SourcePartitionStoreItem; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourcePartition; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/ShutdownHandler.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/ShutdownHandler.java deleted file mode 100644 index 08449e0b21..0000000000 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/server/ShutdownHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.opensearch.dataprepper.pipeline.server; - -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.opensearch.dataprepper.DataPrepper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.HttpMethod; -import java.io.IOException; -import java.net.HttpURLConnection; - -/** - * HttpHandler to handle requests to shut down the data prepper instance - */ -public class ShutdownHandler implements HttpHandler { - private final DataPrepper dataPrepper; - private static final Logger LOG = LoggerFactory.getLogger(ShutdownHandler.class); - - public ShutdownHandler(final DataPrepper dataPrepper) { - this.dataPrepper = dataPrepper; - } - - @Override - public void handle(final HttpExchange exchange) throws IOException { - final String requestMethod = exchange.getRequestMethod(); - if (!requestMethod.equals(HttpMethod.POST)) { - exchange.sendResponseHeaders(HttpURLConnection.HTTP_BAD_METHOD, 0); - exchange.getResponseBody().close(); - return; - } - - try { - if(LOG.isInfoEnabled()) { - LOG.info("Received HTTP shutdown request to shutdown Data Prepper. Shutdown pipelines and server. User-Agent='{}'", - exchange.getRequestHeaders().getFirst("User-Agent")); - } - dataPrepper.shutdownPipelines(); - exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0); - } catch (final Exception e) { - LOG.error("Caught exception shutting down data prepper", e); - exchange.sendResponseHeaders(HttpURLConnection.HTTP_INTERNAL_ERROR, 0); - } finally { - exchange.getResponseBody().close(); - dataPrepper.shutdownServers(); - } - } -} diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProvider.java index 0a76e939d4..b707035321 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProvider.java @@ -5,12 +5,12 @@ package org.opensearch.dataprepper.plugins; -import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; -import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; -import org.opensearch.dataprepper.pipeline.server.DataPrepperCoreAuthenticationProvider; -import org.opensearch.dataprepper.pipeline.server.HttpBasicAuthenticationConfig; import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.BasicAuthenticator; +import org.opensearch.dataprepper.core.pipeline.server.DataPrepperCoreAuthenticationProvider; +import org.opensearch.dataprepper.core.pipeline.server.HttpBasicAuthenticationConfig; +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; import java.util.Objects; diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/UnauthenticatedDataPrepperCoreAuthenticationProvider.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/UnauthenticatedDataPrepperCoreAuthenticationProvider.java index 3a8b71466f..9d6a78fb20 100644 --- a/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/UnauthenticatedDataPrepperCoreAuthenticationProvider.java +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/plugins/UnauthenticatedDataPrepperCoreAuthenticationProvider.java @@ -5,9 +5,9 @@ package org.opensearch.dataprepper.plugins; -import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; -import org.opensearch.dataprepper.pipeline.server.DataPrepperCoreAuthenticationProvider; import com.sun.net.httpserver.Authenticator; +import org.opensearch.dataprepper.core.pipeline.server.DataPrepperCoreAuthenticationProvider; +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; /** * The plugin for unauthenticated core Data Prepper APIs. diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/AbstractContextManagerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/AbstractContextManagerTest.java index 38fbfdcf2e..96e2ba2201 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/AbstractContextManagerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/AbstractContextManagerTest.java @@ -11,6 +11,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.InOrder; import org.mockito.MockedConstruction; +import org.opensearch.dataprepper.core.DataPrepper; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.ArrayList; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/DataPrepperShutdownOptionsTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/DataPrepperShutdownOptionsTest.java new file mode 100644 index 0000000000..42ea27e97b --- /dev/null +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/DataPrepperShutdownOptionsTest.java @@ -0,0 +1,82 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; +import java.util.Random; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class DataPrepperShutdownOptionsTest { + private Random random; + + @BeforeEach + void setUp() { + random = new Random(); + } + + @Test + void defaultOptions_returns_correct_defaults() { + final DataPrepperShutdownOptions options = DataPrepperShutdownOptions.defaultOptions(); + + assertThat(options.getBufferDrainTimeout(), nullValue()); + assertThat(options.getBufferReadTimeout(), nullValue()); + } + + @Test + void builder_returns_valid_builder() { + final DataPrepperShutdownOptions.Builder builder = DataPrepperShutdownOptions.builder(); + + assertThat(builder, notNullValue()); + } + + @Test + void build_throws_if_bufferReadTimeout_is_greater_than_bufferDrainTimeout() { + final Duration bufferDrainTimeout = Duration.ofSeconds(random.nextInt(20)); + final Duration bufferReadTimeout = bufferDrainTimeout.plus(1, ChronoUnit.MILLIS); + final DataPrepperShutdownOptions.Builder builder = DataPrepperShutdownOptions.builder() + .withBufferDrainTimeout(bufferDrainTimeout) + .withBufferReadTimeout(bufferReadTimeout); + assertThrows(IllegalArgumentException.class, builder::build); + } + + @Test + void build_creates_new_options_with_bufferReadTimeout_equal_to_bufferDrainTimeout() { + final Duration timeout = Duration.ofSeconds(random.nextInt(20)); + final DataPrepperShutdownOptions dataPrepperShutdownOptions = DataPrepperShutdownOptions.builder() + .withBufferDrainTimeout(timeout) + .withBufferReadTimeout(timeout) + .build(); + + + assertThat(dataPrepperShutdownOptions, notNullValue()); + assertThat(dataPrepperShutdownOptions.getBufferReadTimeout(), equalTo(timeout)); + assertThat(dataPrepperShutdownOptions.getBufferDrainTimeout(), equalTo(timeout)); + } + + @Test + void build_creates_new_options_with_bufferReadTimeout_less_than_bufferDrainTimeout() { + final Duration bufferReadTimeout = Duration.ofSeconds(random.nextInt(20)); + final Duration bufferDrainTimeout = Duration.ofSeconds(random.nextInt(20)).plus(bufferReadTimeout); + final DataPrepperShutdownOptions dataPrepperShutdownOptions = DataPrepperShutdownOptions.builder() + .withBufferDrainTimeout(bufferDrainTimeout) + .withBufferReadTimeout(bufferReadTimeout) + .build(); + + + assertThat(dataPrepperShutdownOptions, notNullValue()); + assertThat(dataPrepperShutdownOptions.getBufferReadTimeout(), equalTo(bufferReadTimeout)); + assertThat(dataPrepperShutdownOptions.getBufferDrainTimeout(), equalTo(bufferDrainTimeout)); + } +} \ No newline at end of file diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/DataPrepperTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/DataPrepperTests.java similarity index 89% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/DataPrepperTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/DataPrepperTests.java index 670d9664c6..47852ffa24 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/DataPrepperTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/DataPrepperTests.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper; +package org.opensearch.dataprepper.core; import org.hamcrest.Matchers; import org.junit.jupiter.api.BeforeEach; @@ -12,12 +12,13 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.core.parser.PipelineTransformer; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderServer; +import org.opensearch.dataprepper.core.pipeline.Pipeline; +import org.opensearch.dataprepper.core.pipeline.PipelineObserver; +import org.opensearch.dataprepper.core.pipeline.server.DataPrepperServer; import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.parser.PipelineTransformer; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderServer; -import org.opensearch.dataprepper.pipeline.Pipeline; -import org.opensearch.dataprepper.pipeline.PipelineObserver; -import org.opensearch.dataprepper.pipeline.server.DataPrepperServer; import java.lang.reflect.Field; import java.util.HashMap; @@ -111,8 +112,9 @@ public void testGivenValidPipelineParserWhenExecuteThenAllPipelinesExecuteAndSer @Test public void testDataPrepperShutdown() throws NoSuchFieldException, IllegalAccessException { - createObjectUnderTest().shutdownPipelines(); - verify(pipeline).shutdown(); + final DataPrepperShutdownOptions dataPrepperShutdownOptions = mock(DataPrepperShutdownOptions.class); + createObjectUnderTest().shutdownPipelines(dataPrepperShutdownOptions); + verify(pipeline).shutdown(dataPrepperShutdownOptions); } @Test @@ -120,14 +122,14 @@ public void testDataPrepperShutdownPipeline() throws NoSuchFieldException, Illeg final Pipeline randomPipeline = mock(Pipeline.class); lenient().when(randomPipeline.isReady()).thenReturn(true); parseConfigurationFixture.put("Random Pipeline", randomPipeline); - createObjectUnderTest().shutdownPipelines("Random Pipeline"); + createObjectUnderTest().shutdownPipeline("Random Pipeline"); verify(randomPipeline).shutdown(); } @Test public void testDataPrepperShutdownNonExistentPipelineWithoutException() throws NoSuchFieldException, IllegalAccessException { - createObjectUnderTest().shutdownPipelines("Missing Pipeline"); + createObjectUnderTest().shutdownPipeline("Missing Pipeline"); } @Test diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorTests.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorTests.java index 158841a44a..cad7c7bee8 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorTests.java @@ -3,19 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; -import org.opensearch.dataprepper.model.event.DefaultEventHandle; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.junit.jupiter.api.extension.ExtendWith; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.mock; -import static org.hamcrest.Matchers.equalTo; +import org.opensearch.dataprepper.model.event.DefaultEventHandle; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class AcknowledgementSetMonitorTests { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorThreadTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorThreadTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorThreadTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorThreadTest.java index 301e90c02e..df8a923a7b 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/AcknowledgementSetMonitorThreadTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/AcknowledgementSetMonitorThreadTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/CallbackTheadFactoryTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/CallbackTheadFactoryTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/CallbackTheadFactoryTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/CallbackTheadFactoryTest.java index 4f781cfbd3..9e782352d4 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/CallbackTheadFactoryTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/CallbackTheadFactoryTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetManagerTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetManagerTests.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetManagerTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetManagerTests.java index a083f5ea85..59523139ff 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetManagerTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetManagerTests.java @@ -3,30 +3,29 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; -import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.event.DefaultEventHandle; -import org.opensearch.dataprepper.metrics.PluginMetrics; - -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.junit.jupiter.MockitoExtension; import org.junit.jupiter.api.extension.ExtendWith; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.ArgumentMatchers.any; import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; +import org.opensearch.dataprepper.model.event.DefaultEventHandle; +import org.opensearch.dataprepper.model.event.JacksonEvent; -import static org.awaitility.Awaitility.await; -import static org.mockito.Mockito.lenient; -import static org.mockito.Mockito.mock; +import java.time.Duration; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import static org.awaitility.Awaitility.await; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import java.time.Duration; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.Executors; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; @ExtendWith(MockitoExtension.class) class DefaultAcknowledgementSetManagerTests { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetMetricsTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetMetricsTests.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetMetricsTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetMetricsTests.java index 650aad28e3..0ec1a857e0 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetMetricsTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetMetricsTests.java @@ -3,19 +3,20 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; -import org.opensearch.dataprepper.metrics.PluginMetrics; import io.micrometer.core.instrument.Counter; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.mock; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.junit.jupiter.api.BeforeEach; import org.mockito.junit.jupiter.MockitoExtension; -import org.junit.jupiter.api.extension.ExtendWith; +import org.opensearch.dataprepper.metrics.PluginMetrics; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class DefaultAcknowledgementSetMetricsTests { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetTests.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetTests.java index a3ee665adf..dbf2bab1a6 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/DefaultAcknowledgementSetTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/DefaultAcknowledgementSetTests.java @@ -3,25 +3,25 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.awaitility.Awaitility; -import static org.awaitility.Awaitility.await; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import org.opensearch.dataprepper.model.event.DefaultEventHandle; import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import java.time.Duration; -import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; +import static org.awaitility.Awaitility.await; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -129,7 +129,7 @@ void testDefaultAcknowledgementSetMultipleAcquireAndRelease() throws Exception { @Test void testDefaultAcknowledgementInvalidAcquire() { - defaultAcknowledgementSet.add(event); + defaultAcknowledgementSet.add(event.getEventHandle()); defaultAcknowledgementSet.complete(); DefaultAcknowledgementSet secondAcknowledgementSet = createObjectUnderTest(); defaultAcknowledgementSet.acquire(handle2); @@ -247,7 +247,7 @@ void testDefaultAcknowledgementSetWithProgressCheck() throws Exception { Duration.ofSeconds(1) ); defaultAcknowledgementSet.add(event); - defaultAcknowledgementSet.add(event2); + defaultAcknowledgementSet.add(event2.getEventHandle()); defaultAcknowledgementSet.complete(); lenient().doAnswer(a -> { AcknowledgementSet acknowledgementSet = a.getArgument(0); diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/InactiveAcknowledgementSetManagerTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/InactiveAcknowledgementSetManagerTests.java similarity index 93% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/InactiveAcknowledgementSetManagerTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/InactiveAcknowledgementSetManagerTests.java index 8a0a4d2ffd..117bbb9eea 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/acknowledgements/InactiveAcknowledgementSetManagerTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/acknowledgements/InactiveAcknowledgementSetManagerTests.java @@ -3,16 +3,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.acknowledgements; +package org.opensearch.dataprepper.core.acknowledgements; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.jupiter.api.Assertions.assertThrows; import java.time.Duration; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + public class InactiveAcknowledgementSetManagerTests { InactiveAcknowledgementSetManager acknowledgementSetManager; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerAppConfigTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerAppConfigTest.java similarity index 89% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerAppConfigTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerAppConfigTest.java index a4f952d189..42962f4368 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerAppConfigTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerAppConfigTest.java @@ -3,16 +3,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.parser.model.CircuitBreakerConfig; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.HeapCircuitBreakerConfig; import org.opensearch.dataprepper.model.types.ByteCount; -import org.opensearch.dataprepper.parser.model.CircuitBreakerConfig; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.parser.model.HeapCircuitBreakerConfig; import java.time.Duration; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerIT.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerIT.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerIT.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerIT.java index 44c32b4f4d..e225df8de2 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerIT.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerIT.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -13,11 +13,11 @@ import org.junit.jupiter.params.provider.CsvSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.parser.model.CircuitBreakerConfig; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.HeapCircuitBreakerConfig; import org.opensearch.dataprepper.model.breaker.CircuitBreaker; import org.opensearch.dataprepper.model.types.ByteCount; -import org.opensearch.dataprepper.parser.model.CircuitBreakerConfig; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.parser.model.HeapCircuitBreakerConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.time.Duration; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerManagerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerManagerTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerManagerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerManagerTest.java index e92bf39e61..b310fb49c0 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/CircuitBreakerManagerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/CircuitBreakerManagerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/HeapCircuitBreakerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/HeapCircuitBreakerTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/HeapCircuitBreakerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/HeapCircuitBreakerTest.java index 64dbbd69ff..8f2c149f5b 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/breaker/HeapCircuitBreakerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/breaker/HeapCircuitBreakerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.breaker; +package org.opensearch.dataprepper.core.breaker; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -14,8 +14,8 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.parser.model.HeapCircuitBreakerConfig; import org.opensearch.dataprepper.model.types.ByteCount; -import org.opensearch.dataprepper.parser.model.HeapCircuitBreakerConfig; import java.lang.management.MemoryMXBean; import java.lang.management.MemoryUsage; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFLoggingMeterRegistryTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFLoggingMeterRegistryTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFLoggingMeterRegistryTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFLoggingMeterRegistryTest.java index 66a2ca57a5..51e4708dcf 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFLoggingMeterRegistryTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFLoggingMeterRegistryTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFLoggingRegistryConfigTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFLoggingRegistryConfigTest.java similarity index 90% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFLoggingRegistryConfigTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFLoggingRegistryConfigTest.java index 8e9003d9ad..edbe670013 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFLoggingRegistryConfigTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFLoggingRegistryConfigTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; import org.junit.jupiter.api.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFMetricUtilsTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFMetricUtilsTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFMetricUtilsTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFMetricUtilsTest.java index 590a5e9b40..b5dfd90c98 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/EMFMetricUtilsTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/EMFMetricUtilsTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; import org.junit.jupiter.api.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/JvmMemoryAggregateMetricsTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/JvmMemoryAggregateMetricsTest.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/JvmMemoryAggregateMetricsTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/JvmMemoryAggregateMetricsTest.java index b1cd8e7657..177b3acb5d 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/meter/JvmMemoryAggregateMetricsTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/meter/JvmMemoryAggregateMetricsTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.meter; +package org.opensearch.dataprepper.core.meter; import io.micrometer.core.instrument.Meter; import io.micrometer.core.instrument.MeterRegistry; @@ -26,8 +26,8 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.emptyString; import static org.mockito.Mockito.mockStatic; -import static org.opensearch.dataprepper.meter.JvmMemoryAggregateMetrics.AREA_TAG_NAME; -import static org.opensearch.dataprepper.meter.JvmMemoryAggregateMetrics.JVM_MEMORY_USED; +import static org.opensearch.dataprepper.core.meter.JvmMemoryAggregateMetrics.AREA_TAG_NAME; +import static org.opensearch.dataprepper.core.meter.JvmMemoryAggregateMetrics.JVM_MEMORY_USED; @ExtendWith(MockitoExtension.class) class JvmMemoryAggregateMetricsTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/CircuitBreakingBufferTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/CircuitBreakingBufferTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/CircuitBreakingBufferTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/CircuitBreakingBufferTest.java index a1c2f796f5..a622b401d3 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/CircuitBreakingBufferTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/CircuitBreakingBufferTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; +package org.opensearch.dataprepper.core.parser; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -14,8 +14,8 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.model.breaker.CircuitBreaker; import org.opensearch.dataprepper.model.CheckpointState; +import org.opensearch.dataprepper.model.breaker.CircuitBreaker; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.record.Record; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/DataFlowComponentTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/DataFlowComponentTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/DataFlowComponentTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/DataFlowComponentTest.java index 524258d3c2..64a4bf355d 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/DataFlowComponentTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/DataFlowComponentTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; +package org.opensearch.dataprepper.core.parser; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/MultiBufferDecoratorTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/MultiBufferDecoratorTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/MultiBufferDecoratorTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/MultiBufferDecoratorTest.java index 896268fcf4..9cebed2cc5 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/MultiBufferDecoratorTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/MultiBufferDecoratorTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; +package org.opensearch.dataprepper.core.parser; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -20,8 +20,8 @@ import java.util.AbstractMap; import java.util.Collection; import java.util.List; -import java.util.Optional; import java.util.Map; +import java.util.Optional; import java.util.Random; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/PipelineTransformerTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/PipelineTransformerTests.java similarity index 89% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/PipelineTransformerTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/PipelineTransformerTests.java index e2bfa826f1..2725bcbd26 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/PipelineTransformerTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/PipelineTransformerTests.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser; +package org.opensearch.dataprepper.core.parser; import org.hamcrest.CoreMatchers; import org.junit.jupiter.api.AfterEach; @@ -19,29 +19,31 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.TestDataProvider; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; -import org.opensearch.dataprepper.breaker.CircuitBreakerManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.breaker.CircuitBreakerManager; import org.opensearch.dataprepper.core.event.EventFactoryApplicationContextMarker; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderReceiveBuffer; +import org.opensearch.dataprepper.core.pipeline.Pipeline; +import org.opensearch.dataprepper.core.pipeline.router.RouterFactory; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactory; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.model.breaker.CircuitBreaker; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.configuration.PipelineModel; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import org.opensearch.dataprepper.model.plugin.PluginFactory; import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderReceiveBuffer; -import org.opensearch.dataprepper.pipeline.Pipeline; import org.opensearch.dataprepper.pipeline.parser.PipelineConfigurationFileReader; import org.opensearch.dataprepper.pipeline.parser.PipelinesDataflowModelParser; -import org.opensearch.dataprepper.pipeline.router.RouterFactory; import org.opensearch.dataprepper.plugin.DefaultPluginFactory; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactory; import org.opensearch.dataprepper.validation.PluginError; -import org.opensearch.dataprepper.validation.PluginErrorCollector; import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -64,12 +66,15 @@ import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.core.Is.is; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import static org.opensearch.dataprepper.core.parser.PipelineTransformer.CONDITIONAL_ROUTE_INVALID_EXPRESSION_FORMAT; @ExtendWith(MockitoExtension.class) class PipelineTransformerTests { @@ -93,6 +98,9 @@ class PipelineTransformerTests { private CircuitBreakerManager circuitBreakerManager; @Mock private PluginErrorsHandler pluginErrorsHandler; + + @Mock + private ExpressionEvaluator expressionEvaluator; @Captor private ArgumentCaptor> pluginErrorsArgumentCaptor; @@ -131,6 +139,7 @@ void setUp() { @AfterEach void tearDown() { + verify(dataPrepperConfiguration).getEventConfiguration(); verifyNoMoreInteractions(dataPrepperConfiguration); } @@ -142,7 +151,7 @@ private PipelineTransformer createObjectUnderTest(final String pipelineConfigura pipelinesDataFlowModel, pluginFactory, peerForwarderProvider, routerFactory, dataPrepperConfiguration, circuitBreakerManager, eventFactory, acknowledgementSetManager, sourceCoordinatorFactory, pluginErrorCollector, - pluginErrorsHandler); + pluginErrorsHandler, expressionEvaluator); } @Test @@ -363,6 +372,7 @@ void testMultipleProcessors() { @Test void parseConfiguration_with_routes_creates_correct_pipeline() { mockDataPrepperConfigurationAccesses(); + when(expressionEvaluator.isValidExpressionStatement(anyString())).thenReturn(true); final PipelineTransformer pipelineTransformer = createObjectUnderTest("src/test/resources/valid_multiple_sinks_with_routes.yml"); final Map pipelineMap = pipelineTransformer.transformConfiguration(); @@ -376,6 +386,34 @@ void parseConfiguration_with_routes_creates_correct_pipeline() { verify(dataPrepperConfiguration).getPipelineExtensions(); } + @Test + void parseConfiguration_with_invalid_route_expressions_handles_errors_and_returns_empty_pipeline_map() { + when(expressionEvaluator.isValidExpressionStatement("/value == raw")).thenReturn(true); + when(expressionEvaluator.isValidExpressionStatement("/value == service")).thenReturn(false); + + final ArgumentCaptor> pluginErrorArgumentCaptor = ArgumentCaptor.forClass(Collection.class); + doNothing().when(pluginErrorsHandler).handleErrors(pluginErrorArgumentCaptor.capture()); + final PipelineTransformer pipelineTransformer = + createObjectUnderTest("src/test/resources/valid_multiple_sinks_with_routes.yml"); + final Map pipelineMap = pipelineTransformer.transformConfiguration(); + assertThat(pipelineMap.keySet().isEmpty(), equalTo(true)); + + final Collection pluginErrorCollection = pluginErrorArgumentCaptor.getValue(); + assertThat(pluginErrorCollection, notNullValue()); + assertThat(pluginErrorCollection.size(), equalTo(1)); + + final PluginError pluginError = pluginErrorCollection.stream().findAny().orElseThrow(); + final String expectedErrorMessage = String.format(CONDITIONAL_ROUTE_INVALID_EXPRESSION_FORMAT, "service", "/value == service"); + assertThat(pluginError.getPluginName(), equalTo(null)); + assertThat(pluginError.getPipelineName(), equalTo("entry-pipeline")); + assertThat(pluginError.getComponentType(), equalTo(PipelineModel.ROUTE_PLUGIN_TYPE)); + assertThat(pluginError.getException(), notNullValue()); + assertThat(pluginError.getException() instanceof InvalidPluginConfigurationException, equalTo(true)); + assertThat(pluginError.getException().getMessage(), equalTo(expectedErrorMessage)); + + verify(dataPrepperConfiguration).getPipelineExtensions(); + } + @Test void getPeerForwarderDrainDuration_peerForwarderConfigurationNotSet() { when(dataPrepperConfiguration.getPeerForwarderConfiguration()).thenReturn(null); diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/CustomTagsMeterFilterTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/CustomTagsMeterFilterTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/CustomTagsMeterFilterTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/CustomTagsMeterFilterTest.java index d98cc9135b..e0e7208935 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/CustomTagsMeterFilterTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/CustomTagsMeterFilterTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; import io.micrometer.core.instrument.Meter; import io.micrometer.core.instrument.Tag; @@ -19,7 +19,7 @@ import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.notNullValue; -import static org.opensearch.dataprepper.DataPrepper.getServiceNameForMetrics; +import static org.opensearch.dataprepper.core.DataPrepper.getServiceNameForMetrics; import static org.opensearch.dataprepper.metrics.MetricNames.SERVICE_NAME; class CustomTagsMeterFilterTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/DataPrepperAppConfigurationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/DataPrepperAppConfigurationTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/DataPrepperAppConfigurationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/DataPrepperAppConfigurationTest.java index e7ab52df2e..89fe2fb51c 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/DataPrepperAppConfigurationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/DataPrepperAppConfigurationTest.java @@ -3,15 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.TestDataProvider; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import org.opensearch.dataprepper.model.configuration.PluginModel; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; import java.io.File; import java.io.IOException; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/MetricTagFilterTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/MetricTagFilterTest.java similarity index 94% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/MetricTagFilterTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/MetricTagFilterTest.java index 8b42db1091..ab9102f95f 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/MetricTagFilterTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/MetricTagFilterTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/MetricsConfigTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/MetricsConfigTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/MetricsConfigTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/MetricsConfigTest.java index fd9ed7038a..82904429c2 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/MetricsConfigTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/MetricsConfigTest.java @@ -3,22 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; -import io.micrometer.core.instrument.Metrics; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.opensearch.dataprepper.DataPrepper; -import org.opensearch.dataprepper.meter.EMFLoggingMeterRegistry; -import org.opensearch.dataprepper.metrics.MetricNames; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.parser.model.MetricRegistryType; -import org.opensearch.dataprepper.pipeline.server.CloudWatchMeterRegistryProvider; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import io.micrometer.cloudwatch2.CloudWatchMeterRegistry; import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.Tag; import io.micrometer.core.instrument.binder.MeterBinder; import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics; @@ -28,12 +20,20 @@ import io.micrometer.core.instrument.binder.system.ProcessorMetrics; import io.micrometer.core.instrument.composite.CompositeMeterRegistry; import io.micrometer.prometheus.PrometheusMeterRegistry; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.DataPrepper; +import org.opensearch.dataprepper.core.meter.EMFLoggingMeterRegistry; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.MetricRegistryType; +import org.opensearch.dataprepper.core.pipeline.server.CloudWatchMeterRegistryProvider; +import org.opensearch.dataprepper.metrics.MetricNames; import java.util.Arrays; import java.util.Collections; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/PipelineParserConfigurationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/PipelineParserConfigurationTest.java similarity index 74% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/PipelineParserConfigurationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/PipelineParserConfigurationTest.java index ab657dfc94..59c23d7abc 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/config/PipelineParserConfigurationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/config/PipelineParserConfigurationTest.java @@ -3,23 +3,24 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.config; +package org.opensearch.dataprepper.core.parser.config; -import org.opensearch.dataprepper.breaker.CircuitBreakerManager; -import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; -import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.parser.PipelineTransformer; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; -import org.opensearch.dataprepper.pipeline.router.RouterFactory; -import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.core.breaker.CircuitBreakerManager; +import org.opensearch.dataprepper.core.parser.PipelineTransformer; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.pipeline.router.RouterFactory; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactory; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactory; -import org.opensearch.dataprepper.validation.PluginErrorCollector; +import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; +import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.plugin.PluginFactory; import org.opensearch.dataprepper.validation.PluginErrorsHandler; import static org.hamcrest.MatcherAssert.assertThat; @@ -63,12 +64,15 @@ class PipelineParserConfigurationTest { @Mock private PluginErrorsHandler pluginErrorsHandler; + @Mock + private ExpressionEvaluator expressionEvaluator; + @Test void pipelineParser() { final PipelineTransformer pipelineTransformer = pipelineParserConfiguration.pipelineParser( pipelinesDataFlowModel, pluginFactory, peerForwarderProvider, routerFactory, dataPrepperConfiguration, circuitBreakerManager, eventFactory, acknowledgementSetManager, - sourceCoordinatorFactory, pluginErrorCollector, pluginErrorsHandler); + sourceCoordinatorFactory, pluginErrorCollector, pluginErrorsHandler, expressionEvaluator); assertThat(pipelineTransformer, is(notNullValue())); } diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/model/DataPrepperConfigurationTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/model/DataPrepperConfigurationTests.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/model/DataPrepperConfigurationTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/model/DataPrepperConfigurationTests.java index e0fe6a7d6e..156543accf 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/model/DataPrepperConfigurationTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/model/DataPrepperConfigurationTests.java @@ -3,25 +3,25 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.model; +package org.opensearch.dataprepper.core.parser.model; -import org.opensearch.dataprepper.TestDataProvider; -import org.opensearch.dataprepper.model.types.ByteCount; -import org.opensearch.dataprepper.pipeline.parser.ByteCountDeserializer; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; -import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; import com.fasterxml.jackson.databind.exc.ValueInstantiationException; -import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.opensearch.dataprepper.pipeline.PipelineShutdownOption; +import org.opensearch.dataprepper.TestDataProvider; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.pipeline.PipelineShutdownOption; +import org.opensearch.dataprepper.model.types.ByteCount; +import org.opensearch.dataprepper.pipeline.parser.ByteCountDeserializer; +import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; import java.io.File; import java.io.IOException; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/model/HeapCircuitBreakerConfigTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/model/HeapCircuitBreakerConfigTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/model/HeapCircuitBreakerConfigTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/model/HeapCircuitBreakerConfigTest.java index 8db9044210..71b4888e2b 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/parser/model/HeapCircuitBreakerConfigTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/parser/model/HeapCircuitBreakerConfigTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.parser.model; +package org.opensearch.dataprepper.core.parser.model; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/DefaultPeerForwarderProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/DefaultPeerForwarderProviderTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/DefaultPeerForwarderProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/DefaultPeerForwarderProviderTest.java index 4c1c36482c..17b241697d 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/DefaultPeerForwarderProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/DefaultPeerForwarderProviderTest.java @@ -3,19 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; -import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.processor.Processor; -import org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.model.record.Record; import java.util.Collections; import java.util.List; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/ForwardingAuthenticationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/ForwardingAuthenticationTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/ForwardingAuthenticationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/ForwardingAuthenticationTest.java index 06b6c090b6..96c3ac1884 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/ForwardingAuthenticationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/ForwardingAuthenticationTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/HashRingTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/HashRingTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/HashRingTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/HashRingTest.java index cb2c6ac22d..380e44d4ad 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/HashRingTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/HashRingTest.java @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner; -import org.opensearch.dataprepper.peerforwarder.discovery.PeerListProvider; +import org.opensearch.dataprepper.core.peerforwarder.discovery.PeerListProvider; import java.util.Arrays; import java.util.Collections; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/LocalPeerForwarderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/LocalPeerForwarderTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/LocalPeerForwarderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/LocalPeerForwarderTest.java index e533b8067f..48b029a187 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/LocalPeerForwarderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/LocalPeerForwarderTest.java @@ -3,21 +3,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; import org.junit.jupiter.api.Test; import org.mockito.Mock; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; import java.util.Collection; import java.util.Collections; import java.util.List; +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.Matchers.empty; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.Matchers.empty; class LocalPeerForwarderTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerClientPoolTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerClientPoolTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerClientPoolTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerClientPoolTest.java index ad9896824e..798bd5ca4e 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerClientPoolTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerClientPoolTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.linecorp.armeria.client.WebClient; import org.junit.jupiter.api.Assertions; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfigIT.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfigIT.java similarity index 84% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfigIT.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfigIT.java index a1db33f7d7..1efb5c21dc 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfigIT.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfigIT.java @@ -3,21 +3,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; import org.opensearch.dataprepper.core.event.EventFactoryApplicationContextMarker; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration.DEFAULT_CERTIFICATE_FILE_PATH; -import static org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration.DEFAULT_PRIVATE_KEY_FILE_PATH; +import static org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration.DEFAULT_CERTIFICATE_FILE_PATH; +import static org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration.DEFAULT_PRIVATE_KEY_FILE_PATH; class PeerForwarderAppConfigIT { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfigTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfigTest.java similarity index 91% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfigTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfigTest.java index 5c5944d0e2..3ed543b480 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderAppConfigTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderAppConfigTest.java @@ -3,12 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.certificate.CertificateProviderFactory; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; -import org.opensearch.dataprepper.peerforwarder.certificate.CertificateProviderFactory; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.notNullValue; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderClientFactoryTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderClientFactoryTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderClientFactoryTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderClientFactoryTest.java index ed357c0a73..6078f66eba 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderClientFactoryTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderClientFactoryTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import org.hamcrest.core.IsInstanceOf; import org.junit.jupiter.api.BeforeEach; @@ -15,9 +15,9 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.peerforwarder.certificate.CertificateProviderFactory; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.certificate.CertificateProviderFactory; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; import org.opensearch.dataprepper.plugins.certificate.CertificateProvider; import org.opensearch.dataprepper.plugins.certificate.model.Certificate; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderConfigurationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderConfigurationTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderConfigurationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderConfigurationTest.java index 4c6d22609b..1d469a0975 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderConfigurationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderConfigurationTest.java @@ -3,21 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; -import static org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration.DEFAULT_DRAIN_TIMEOUT; - -import org.opensearch.dataprepper.TestDataProvider; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; -import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; -import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.exc.ValueInstantiationException; -import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.opensearch.dataprepper.TestDataProvider; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; import java.io.File; import java.io.IOException; @@ -28,8 +26,9 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration.DEFAULT_FORWARDING_BATCH_TIMEOUT; -import static org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration.DEFAULT_PRIVATE_KEY_FILE_PATH; +import static org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration.DEFAULT_DRAIN_TIMEOUT; +import static org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration.DEFAULT_FORWARDING_BATCH_TIMEOUT; +import static org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration.DEFAULT_PRIVATE_KEY_FILE_PATH; class PeerForwarderConfigurationTest { private static SimpleModule simpleModule = new SimpleModule().addDeserializer(Duration.class, new DataPrepperDurationDeserializer()); diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderReceiveBufferTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderReceiveBufferTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderReceiveBufferTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderReceiveBufferTest.java index 15555776d6..ea579bbbf7 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarderReceiveBufferTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarderReceiveBufferTest.java @@ -3,15 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.opensearch.dataprepper.model.CheckpointState; import org.opensearch.dataprepper.model.buffer.SizeOverflowException; import org.opensearch.dataprepper.model.record.Record; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Collection; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarder_ClientServerIT.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarder_ClientServerIT.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarder_ClientServerIT.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarder_ClientServerIT.java index f706cb97d7..929b98f0dc 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwarder_ClientServerIT.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwarder_ClientServerIT.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.fasterxml.jackson.databind.ObjectMapper; import com.linecorp.armeria.client.UnprocessedRequestException; @@ -17,24 +17,25 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.opensearch.dataprepper.core.peerforwarder.certificate.CertificateProviderFactory; +import org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient; +import org.opensearch.dataprepper.core.peerforwarder.codec.JacksonPeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.codec.JavaPeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.codec.PeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.codec.PeerForwarderCodecAppConfig; +import org.opensearch.dataprepper.core.peerforwarder.discovery.DiscoveryMode; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderHttpServerProvider; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderHttpService; +import org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderServer; +import org.opensearch.dataprepper.core.peerforwarder.server.RemotePeerForwarderServer; +import org.opensearch.dataprepper.core.peerforwarder.server.ResponseHandler; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.CheckpointState; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.processor.Processor; -import org.opensearch.dataprepper.peerforwarder.certificate.CertificateProviderFactory; -import org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient; -import org.opensearch.dataprepper.peerforwarder.codec.PeerForwarderCodecAppConfig; -import org.opensearch.dataprepper.peerforwarder.codec.JacksonPeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.codec.JavaPeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.codec.PeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.discovery.DiscoveryMode; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderHttpServerProvider; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderHttpService; -import org.opensearch.dataprepper.peerforwarder.server.PeerForwarderServer; -import org.opensearch.dataprepper.peerforwarder.server.RemotePeerForwarderServer; -import org.opensearch.dataprepper.peerforwarder.server.ResponseHandler; +import org.opensearch.dataprepper.model.record.Record; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import javax.net.ssl.SSLHandshakeException; @@ -59,7 +60,6 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.empty; import static org.junit.jupiter.api.Assertions.assertThrows; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; /** * Integration tests that verify that Peer Forwarder client-server communication diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwardingProcessingDecoratorTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwardingProcessingDecoratorTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwardingProcessingDecoratorTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwardingProcessingDecoratorTest.java index 7a85033842..d33563bac9 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/PeerForwardingProcessingDecoratorTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/PeerForwardingProcessingDecoratorTest.java @@ -3,24 +3,22 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.peerforwarder.RequiresPeerForwarding; -import org.opensearch.dataprepper.model.processor.Processor; -import org.opensearch.dataprepper.model.record.Record; +import org.apache.commons.collections.CollectionUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.apache.commons.collections.CollectionUtils; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.lenient; -import org.opensearch.dataprepper.peerforwarder.exception.EmptyPeerForwarderPluginIdentificationKeysException; -import org.opensearch.dataprepper.peerforwarder.exception.UnsupportedPeerForwarderPluginException; +import org.opensearch.dataprepper.core.peerforwarder.exception.EmptyPeerForwarderPluginIdentificationKeysException; +import org.opensearch.dataprepper.core.peerforwarder.exception.UnsupportedPeerForwarderPluginException; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.peerforwarder.RequiresPeerForwarding; +import org.opensearch.dataprepper.model.processor.Processor; +import org.opensearch.dataprepper.model.record.Record; import java.util.ArrayList; import java.util.Collection; @@ -30,11 +28,13 @@ import java.util.Set; import java.util.UUID; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.CoreMatchers.equalTo; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyCollection; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/RemotePeerForwarderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/RemotePeerForwarderTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/RemotePeerForwarderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/RemotePeerForwarderTest.java index 64c16ff82b..6a10dc061a 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/RemotePeerForwarderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/RemotePeerForwarderTest.java @@ -3,23 +3,24 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder; +package org.opensearch.dataprepper.core.peerforwarder; import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.HttpStatus; -import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.log.JacksonLog; -import org.opensearch.dataprepper.model.record.Record; import io.micrometer.core.instrument.Counter; +import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient; +import org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.log.JacksonLog; +import org.opensearch.dataprepper.model.record.Record; import java.time.Duration; import java.time.temporal.ChronoUnit; @@ -38,10 +39,10 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.CoreMatchers.equalTo; import static org.mockito.ArgumentMatchers.anyCollection; import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.ArgumentMatchers.anyString; @@ -52,15 +53,14 @@ import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.RECORDS_ACTUALLY_PROCESSED_LOCALLY; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.RECORDS_FAILED_FORWARDING; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.RECORDS_SUCCESSFULLY_FORWARDED; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.RECORDS_TO_BE_FORWARDED; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.RECORDS_TO_BE_PROCESSED_LOCALLY; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.RECORDS_MISSING_IDENTIFICATION_KEYS; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.REQUESTS_FAILED; -import static org.opensearch.dataprepper.peerforwarder.RemotePeerForwarder.REQUESTS_SUCCESSFUL; -import org.apache.commons.lang3.RandomStringUtils; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.RECORDS_ACTUALLY_PROCESSED_LOCALLY; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.RECORDS_FAILED_FORWARDING; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.RECORDS_MISSING_IDENTIFICATION_KEYS; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.RECORDS_SUCCESSFULLY_FORWARDED; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.RECORDS_TO_BE_FORWARDED; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.RECORDS_TO_BE_PROCESSED_LOCALLY; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.REQUESTS_FAILED; +import static org.opensearch.dataprepper.core.peerforwarder.RemotePeerForwarder.REQUESTS_SUCCESSFUL; @ExtendWith(MockitoExtension.class) class RemotePeerForwarderTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/certificate/CertificateProviderFactoryTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/certificate/CertificateProviderFactoryTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/certificate/CertificateProviderFactoryTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/certificate/CertificateProviderFactoryTest.java index f3cec46608..2012ac7e0a 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/certificate/CertificateProviderFactoryTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/certificate/CertificateProviderFactoryTest.java @@ -3,18 +3,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.certificate; +package org.opensearch.dataprepper.core.peerforwarder.certificate; -import org.opensearch.dataprepper.plugins.certificate.CertificateProvider; -import org.opensearch.dataprepper.plugins.certificate.acm.ACMCertificateProvider; -import org.opensearch.dataprepper.plugins.certificate.file.FileCertificateProvider; -import org.opensearch.dataprepper.plugins.certificate.s3.S3CertificateProvider; import org.hamcrest.core.IsInstanceOf; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.plugins.certificate.CertificateProvider; +import org.opensearch.dataprepper.plugins.certificate.acm.ACMCertificateProvider; +import org.opensearch.dataprepper.plugins.certificate.file.FileCertificateProvider; +import org.opensearch.dataprepper.plugins.certificate.s3.S3CertificateProvider; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/client/PeerForwarderClientTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/client/PeerForwarderClientTest.java similarity index 91% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/client/PeerForwarderClientTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/client/PeerForwarderClientTest.java index e2af4431e0..026b0626c2 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/client/PeerForwarderClientTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/client/PeerForwarderClientTest.java @@ -3,22 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.client; +package org.opensearch.dataprepper.core.peerforwarder.client; -import com.linecorp.armeria.common.AggregatedHttpResponse; -import com.linecorp.armeria.common.HttpResponse; -import com.linecorp.armeria.common.HttpStatus; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.log.JacksonLog; -import org.opensearch.dataprepper.model.record.Record; import com.linecorp.armeria.client.ClientBuilder; import com.linecorp.armeria.client.Clients; import com.linecorp.armeria.client.WebClient; +import com.linecorp.armeria.common.AggregatedHttpResponse; +import com.linecorp.armeria.common.HttpResponse; +import com.linecorp.armeria.common.HttpStatus; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; @@ -28,14 +20,22 @@ import io.micrometer.core.instrument.noop.NoopTimer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.PeerClientPool; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderClientFactory; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.codec.PeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.core.peerforwarder.PeerClientPool; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderClientFactory; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.codec.PeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.log.JacksonLog; +import org.opensearch.dataprepper.model.record.Record; import java.io.IOException; import java.io.OutputStream; @@ -59,9 +59,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import static org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration.DEFAULT_PEER_FORWARDING_URI; -import static org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient.REQUESTS; -import static org.opensearch.dataprepper.peerforwarder.client.PeerForwarderClient.CLIENT_REQUEST_FORWARDING_LATENCY; +import static org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration.DEFAULT_PEER_FORWARDING_URI; +import static org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient.CLIENT_REQUEST_FORWARDING_LATENCY; +import static org.opensearch.dataprepper.core.peerforwarder.client.PeerForwarderClient.REQUESTS; @ExtendWith(MockitoExtension.class) class PeerForwarderClientTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/JacksonPeerForwarderCodecTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/JacksonPeerForwarderCodecTest.java similarity index 93% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/JacksonPeerForwarderCodecTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/JacksonPeerForwarderCodecTest.java index 15cb99e828..c10cd607bb 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/JacksonPeerForwarderCodecTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/JacksonPeerForwarderCodecTest.java @@ -3,16 +3,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.core.peerforwarder.model.WireEvents; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.log.JacksonLog; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; -import org.opensearch.dataprepper.peerforwarder.model.WireEvents; import java.io.IOException; import java.util.ArrayList; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/JavaPeerForwarderCodecTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/JavaPeerForwarderCodecTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/JavaPeerForwarderCodecTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/JavaPeerForwarderCodecTest.java index bd0b26e05f..7b7b3a005e 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/JavaPeerForwarderCodecTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/JavaPeerForwarderCodecTest.java @@ -3,16 +3,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.InternalEventHandle; import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.log.JacksonLog; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; import java.io.IOException; import java.io.InvalidClassException; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/LoggingObjectInputFilterTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/LoggingObjectInputFilterTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/LoggingObjectInputFilterTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/LoggingObjectInputFilterTest.java index c68c89c23c..7dacf2dbfc 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/LoggingObjectInputFilterTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/LoggingObjectInputFilterTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodecAppConfig_SerializationFilterIT.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodecAppConfig_SerializationFilterIT.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodecAppConfig_SerializationFilterIT.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodecAppConfig_SerializationFilterIT.java index f9390f899c..71a59ca32f 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/codec/PeerForwarderCodecAppConfig_SerializationFilterIT.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/codec/PeerForwarderCodecAppConfig_SerializationFilterIT.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.codec; +package org.opensearch.dataprepper.core.peerforwarder.codec; import com.google.common.collect.Sets; import org.junit.jupiter.api.BeforeEach; @@ -17,6 +17,8 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; import org.opensearch.dataprepper.model.document.JacksonDocument; import org.opensearch.dataprepper.model.event.DefaultEventMetadata; import org.opensearch.dataprepper.model.event.Event; @@ -30,8 +32,6 @@ import org.opensearch.dataprepper.model.metric.JacksonSummary; import org.opensearch.dataprepper.model.trace.DefaultTraceGroupFields; import org.opensearch.dataprepper.model.trace.JacksonSpan; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; import org.reflections.Reflections; import org.reflections.util.ConfigurationBuilder; @@ -88,7 +88,7 @@ * 2) Classes which Data Prepper knows should be registered can be deserialized. * 3) Classes which Data Prepper should be able to deserialized are included in test #2. * Note that these tests use the {@link ObjectInputStream} directly. This is because using the - * {@link org.opensearch.dataprepper.peerforwarder.codec.JavaPeerForwarderCodec} will throw class casting exceptions, + * {@link JavaPeerForwarderCodec} will throw class casting exceptions, * but we want to be sure the exception comes from the filter, not the cast. */ @ExtendWith(MockitoExtension.class) diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProviderCreationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProviderCreationTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProviderCreationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProviderCreationTest.java index dd08d5a6c8..1948f46a36 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProviderCreationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProviderCreationTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -12,8 +12,8 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.ArgumentsProvider; import org.junit.jupiter.params.provider.ArgumentsSource; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import software.amazon.awssdk.regions.Region; import java.util.Map; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProviderTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProviderTest.java index 67429e27ef..385bbd3688 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/AwsCloudMapPeerListProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/AwsCloudMapPeerListProviderTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.linecorp.armeria.client.Endpoint; import com.linecorp.armeria.client.retry.Backoff; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProviderCreationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProviderCreationTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProviderCreationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProviderCreationTest.java index c3c8d13763..4afd378857 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProviderCreationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProviderCreationTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.linecorp.armeria.client.endpoint.dns.DnsAddressEndpointGroup; import com.linecorp.armeria.client.endpoint.dns.DnsAddressEndpointGroupBuilder; @@ -14,8 +14,8 @@ import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import java.util.concurrent.CompletableFuture; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProviderTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProviderTest.java index 3bdee15368..b97d01c069 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/DnsPeerListProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/DnsPeerListProviderTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import com.linecorp.armeria.client.Endpoint; import com.linecorp.armeria.client.endpoint.dns.DnsAddressEndpointGroup; @@ -13,8 +13,8 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.peerforwarder.HashRing; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.HashRing; import java.util.Arrays; import java.util.Collections; @@ -31,7 +31,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import static org.opensearch.dataprepper.peerforwarder.discovery.PeerListProvider.PEER_ENDPOINTS; +import static org.opensearch.dataprepper.core.peerforwarder.discovery.PeerListProvider.PEER_ENDPOINTS; @ExtendWith(MockitoExtension.class) public class DnsPeerListProviderTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/LocalPeerListProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/LocalPeerListProviderTest.java similarity index 89% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/LocalPeerListProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/LocalPeerListProviderTest.java index d7826fd2ac..7960860a55 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/LocalPeerListProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/LocalPeerListProviderTest.java @@ -3,15 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.peerforwarder.HashRing; +import org.opensearch.dataprepper.core.peerforwarder.HashRing; import java.util.Collections; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verifyNoInteractions; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProviderCreationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProviderCreationTest.java similarity index 93% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProviderCreationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProviderCreationTest.java index 50758e3767..61d5f70ec3 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProviderCreationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProviderCreationTest.java @@ -3,12 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; import java.util.Arrays; import java.util.Collections; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProviderTest.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProviderTest.java index 589329b108..cf6ae25567 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/discovery/StaticPeerListProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/discovery/StaticPeerListProviderTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.discovery; +package org.opensearch.dataprepper.core.peerforwarder.discovery; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -11,8 +11,8 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.peerforwarder.HashRing; import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.peerforwarder.HashRing; import java.util.Arrays; import java.util.Collections; @@ -27,7 +27,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; -import static org.opensearch.dataprepper.peerforwarder.discovery.PeerListProvider.PEER_ENDPOINTS; +import static org.opensearch.dataprepper.core.peerforwarder.discovery.PeerListProvider.PEER_ENDPOINTS; @ExtendWith(MockitoExtension.class) public class StaticPeerListProviderTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysExceptionTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysExceptionTest.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysExceptionTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysExceptionTest.java index c9b50d07a7..78cea93ca3 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysExceptionTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/exception/EmptyPeerForwarderPluginIdentificationKeysExceptionTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.exception; +package org.opensearch.dataprepper.core.peerforwarder.exception; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/exception/UnsupportedPeerForwarderPluginExceptionTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/exception/UnsupportedPeerForwarderPluginExceptionTest.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/exception/UnsupportedPeerForwarderPluginExceptionTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/exception/UnsupportedPeerForwarderPluginExceptionTest.java index 27ce1259ac..506c383f00 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/exception/UnsupportedPeerForwarderPluginExceptionTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/exception/UnsupportedPeerForwarderPluginExceptionTest.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.exception; +package org.opensearch.dataprepper.core.peerforwarder.exception; -import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import java.util.UUID; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/NoOpPeerForwarderServerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/NoOpPeerForwarderServerTest.java similarity index 90% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/NoOpPeerForwarderServerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/NoOpPeerForwarderServerTest.java index a68534cc47..e29354ebef 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/NoOpPeerForwarderServerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/NoOpPeerForwarderServerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import org.junit.jupiter.api.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServerProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServerProviderTest.java similarity index 84% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServerProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServerProviderTest.java index 148a4c3dbe..99696fc74d 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServerProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServerProviderTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import com.linecorp.armeria.server.Server; import org.junit.jupiter.api.Assertions; @@ -11,12 +11,12 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.certificate.CertificateProviderFactory; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.certificate.CertificateProviderFactory; -import static org.mockito.Mockito.when; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class PeerForwarderHttpServerProviderTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServiceTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServiceTest.java similarity index 91% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServiceTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServiceTest.java index 9256c047e3..f81943dcf8 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderHttpServiceTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderHttpServiceTest.java @@ -3,36 +3,36 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; -import io.micrometer.core.instrument.Counter; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.metrics.PluginMetrics; -import org.opensearch.dataprepper.model.buffer.SizeOverflowException; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.log.JacksonLog; -import org.opensearch.dataprepper.model.record.Record; import com.linecorp.armeria.common.AggregatedHttpRequest; import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.HttpData; import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.HttpStatus; +import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.Meter; import io.micrometer.core.instrument.Tags; import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.noop.NoopTimer; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderReceiveBuffer; +import org.opensearch.dataprepper.core.peerforwarder.codec.PeerForwarderCodec; +import org.opensearch.dataprepper.core.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderReceiveBuffer; -import org.opensearch.dataprepper.peerforwarder.codec.PeerForwarderCodec; -import org.opensearch.dataprepper.peerforwarder.model.PeerForwardingEvents; +import org.opensearch.dataprepper.model.buffer.SizeOverflowException; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.log.JacksonLog; +import org.opensearch.dataprepper.model.record.Record; import java.io.IOException; import java.util.ArrayList; @@ -41,16 +41,16 @@ import java.util.Map; import java.util.concurrent.ExecutionException; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import static org.opensearch.dataprepper.peerforwarder.server.PeerForwarderHttpService.RECORDS_RECEIVED_FROM_PEERS; -import static org.opensearch.dataprepper.peerforwarder.server.PeerForwarderHttpService.SERVER_REQUEST_PROCESSING_LATENCY; +import static org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderHttpService.RECORDS_RECEIVED_FROM_PEERS; +import static org.opensearch.dataprepper.core.peerforwarder.server.PeerForwarderHttpService.SERVER_REQUEST_PROCESSING_LATENCY; @ExtendWith(MockitoExtension.class) class PeerForwarderHttpServiceTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServerProxyTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServerProxyTest.java similarity index 93% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServerProxyTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServerProxyTest.java index 5b5cab8570..e3a8fd1f09 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/PeerForwarderServerProxyTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/PeerForwarderServerProxyTest.java @@ -3,15 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import com.linecorp.armeria.server.Server; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderProvider; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderProvider; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/RemotePeerForwarderServerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/RemotePeerForwarderServerTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/RemotePeerForwarderServerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/RemotePeerForwarderServerTest.java index 505895dd7e..621b2199c5 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/RemotePeerForwarderServerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/RemotePeerForwarderServerTest.java @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import com.linecorp.armeria.server.Server; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.peerforwarder.PeerForwarderConfiguration; +import org.opensearch.dataprepper.core.peerforwarder.PeerForwarderConfiguration; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/ResponseHandlerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/ResponseHandlerTest.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/ResponseHandlerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/ResponseHandlerTest.java index 0b78bc8abf..4f64b50f3b 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/peerforwarder/server/ResponseHandlerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/peerforwarder/server/ResponseHandlerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.peerforwarder.server; +package org.opensearch.dataprepper.core.peerforwarder.server; import com.fasterxml.jackson.core.JsonProcessingException; import com.linecorp.armeria.common.AggregatedHttpResponse; @@ -27,10 +27,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import static org.opensearch.dataprepper.peerforwarder.server.ResponseHandler.BAD_REQUESTS; -import static org.opensearch.dataprepper.peerforwarder.server.ResponseHandler.REQUESTS_TOO_LARGE; -import static org.opensearch.dataprepper.peerforwarder.server.ResponseHandler.REQUESTS_UNPROCESSABLE; -import static org.opensearch.dataprepper.peerforwarder.server.ResponseHandler.REQUEST_TIMEOUTS; +import static org.opensearch.dataprepper.core.peerforwarder.server.ResponseHandler.BAD_REQUESTS; +import static org.opensearch.dataprepper.core.peerforwarder.server.ResponseHandler.REQUESTS_TOO_LARGE; +import static org.opensearch.dataprepper.core.peerforwarder.server.ResponseHandler.REQUESTS_UNPROCESSABLE; +import static org.opensearch.dataprepper.core.peerforwarder.server.ResponseHandler.REQUEST_TIMEOUTS; @ExtendWith(MockitoExtension.class) class ResponseHandlerTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineConnectorTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineConnectorTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineConnectorTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineConnectorTest.java index e2af218c25..525ae0d2cb 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineConnectorTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineConnectorTest.java @@ -3,49 +3,42 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; +import com.google.common.collect.ImmutableMap; +import org.junit.Before; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; import org.opensearch.dataprepper.model.CheckpointState; import org.opensearch.dataprepper.model.buffer.Buffer; -import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.plugins.buffer.TestBuffer; -import org.opensearch.dataprepper.model.trace.JacksonSpan; -import org.opensearch.dataprepper.model.trace.DefaultTraceGroupFields; +import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.trace.DefaultLink; import org.opensearch.dataprepper.model.trace.DefaultSpanEvent; - -import static org.hamcrest.Matchers.sameInstance; -import static org.junit.Assert.assertThat; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - +import org.opensearch.dataprepper.model.trace.DefaultTraceGroupFields; +import org.opensearch.dataprepper.model.trace.JacksonSpan; +import org.opensearch.dataprepper.plugins.buffer.TestBuffer; import org.opensearch.dataprepper.plugins.buffer.blockingbuffer.BlockingBuffer; -import java.util.Arrays; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.List; -import java.util.UUID; -import java.util.Queue; -import java.util.Map; import java.util.Date; import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.UUID; import java.util.concurrent.TimeoutException; -import com.google.common.collect.ImmutableMap; - - +import static org.hamcrest.Matchers.sameInstance; +import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; - -import org.junit.jupiter.api.Assertions; - import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineShutdownAppConfigTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownAppConfigTest.java similarity index 91% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineShutdownAppConfigTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownAppConfigTest.java index 9d400c9b4d..b7743c9a2a 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineShutdownAppConfigTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownAppConfigTest.java @@ -3,13 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import java.util.Map; import java.util.function.Predicate; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineShutdownOptionTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownOptionTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineShutdownOptionTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownOptionTest.java index 1d8c52fd22..0f85bd2d0b 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineShutdownOptionTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownOptionTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownTest.java new file mode 100644 index 0000000000..09ae6ede58 --- /dev/null +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineShutdownTest.java @@ -0,0 +1,189 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.pipeline; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.model.buffer.Buffer; + +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.util.Random; +import java.util.UUID; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class PipelineShutdownTest { + @Mock + private Buffer buffer; + + @Mock + private Clock clock; + + @Mock + private DataPrepperShutdownOptions dataPrepperShutdownOptions; + + private Duration bufferDrainTimeout; + private Random random; + private String pipelineName; + + @BeforeEach + void setUp() { + random = new Random(); + pipelineName = UUID.randomUUID().toString(); + bufferDrainTimeout = Duration.ofSeconds(random.nextInt(100) + 1_000); + + when(buffer.getDrainTimeout()).thenReturn(bufferDrainTimeout); + } + + private PipelineShutdown createObjectUnderTest() { + return new PipelineShutdown(pipelineName, buffer, clock); + } + + @Test + void constructor_throws_if_drainTimeout_is_null() { + reset(buffer); + when(buffer.getDrainTimeout()).thenReturn(null); + assertThrows(NullPointerException.class, this::createObjectUnderTest); + } + + @Test + void isStopRequested_returns_false() { + assertThat(createObjectUnderTest().isStopRequested(), equalTo(false)); + } + + @Test + void isForceStopReadingBuffers_returns_false() { + assertThat(createObjectUnderTest().isForceStopReadingBuffers(), equalTo(false)); + } + + @Test + void isStopRequested_returns_true_after_shutdown() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + when(clock.millis()).thenReturn(Clock.systemUTC().millis()); + objectUnderTest.shutdown(dataPrepperShutdownOptions); + assertThat(objectUnderTest.isStopRequested(), equalTo(true)); + } + + @Test + void isStopRequested_returns_true_after_multiple_shutdown_calls() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + when(clock.millis()).thenReturn(Clock.systemUTC().millis()); + for (int i = 0; i < 10; i++) { + objectUnderTest.shutdown(dataPrepperShutdownOptions); + } + assertThat(objectUnderTest.isStopRequested(), equalTo(true)); + } + + @Test + void isForceStopReadingBuffers_returns_false_after_shutdown_if_getBufferReadTimeout_is_null() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + + when(dataPrepperShutdownOptions.getBufferReadTimeout()).thenReturn(null); + objectUnderTest.shutdown(dataPrepperShutdownOptions); + + assertThat(objectUnderTest.isForceStopReadingBuffers(), equalTo(false)); + } + + @Test + void isForceStopReadingBuffers_returns_false_after_shutdown_if_time_is_before_shutdown_plus_getBufferReadTimeout() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + + when(dataPrepperShutdownOptions.getBufferReadTimeout()).thenReturn(Duration.ofSeconds(1)); + final Instant baseTime = Instant.now(); + when(clock.millis()) + .thenReturn(baseTime.toEpochMilli()); + + objectUnderTest.shutdown(dataPrepperShutdownOptions); + + assertThat(objectUnderTest.isForceStopReadingBuffers(), equalTo(false)); + } + + @Test + void isForceStopReadingBuffers_returns_true_after_shutdown_if_time_is_after_shutdown_plus_getBufferReadTimeout() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + + when(dataPrepperShutdownOptions.getBufferReadTimeout()).thenReturn(Duration.ofSeconds(1)); + final Instant baseTime = Instant.now(); + when(clock.millis()) + .thenReturn(baseTime.toEpochMilli()) + .thenReturn(baseTime.plusSeconds(2).toEpochMilli()); + + objectUnderTest.shutdown(dataPrepperShutdownOptions); + + assertThat(objectUnderTest.isForceStopReadingBuffers(), equalTo(true)); + } + + @Test + void isForceStopReadingBuffers_returns_true_if_shutdown_is_called_multiple_times() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + + when(dataPrepperShutdownOptions.getBufferReadTimeout()) + .thenReturn(Duration.ofSeconds(1)) + .thenReturn(Duration.ofSeconds(5)); + final Instant baseTime = Instant.now(); + when(clock.millis()) + .thenReturn(baseTime.toEpochMilli()) + .thenReturn(baseTime.plusSeconds(2).toEpochMilli()); + + objectUnderTest.shutdown(dataPrepperShutdownOptions); + objectUnderTest.shutdown(dataPrepperShutdownOptions); + + assertThat(objectUnderTest.isForceStopReadingBuffers(), equalTo(true)); + } + + @Test + void isForceStopReadingBuffers_returns_true_if_shutdown_is_called_in_between_isForceStopReadingBuffers_calls() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + + when(dataPrepperShutdownOptions.getBufferReadTimeout()) + .thenReturn(Duration.ofSeconds(1)) + .thenReturn(Duration.ofSeconds(5)); + final Instant baseTime = Instant.now(); + when(clock.millis()) + .thenReturn(baseTime.toEpochMilli()) + .thenReturn(baseTime.plusSeconds(2).toEpochMilli()); + + objectUnderTest.shutdown(dataPrepperShutdownOptions); + assertThat(objectUnderTest.isForceStopReadingBuffers(), equalTo(true)); + + objectUnderTest.shutdown(dataPrepperShutdownOptions); + assertThat(objectUnderTest.isForceStopReadingBuffers(), equalTo(true)); + } + + + @Test + void getBufferDrainTimeout_returns_buffer_getDrainTimeout_if_shutdown_not_called() { + assertThat(createObjectUnderTest().getBufferDrainTimeout(), equalTo(bufferDrainTimeout)); + } + + @Test + void getBufferDrainTimeout_returns_buffer_getDrainTimeout_if_shutdown_called_without_bufferDrainTimeout() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + when(dataPrepperShutdownOptions.getBufferDrainTimeout()).thenReturn(null); + objectUnderTest.shutdown(dataPrepperShutdownOptions); + assertThat(objectUnderTest.getBufferDrainTimeout(), equalTo(bufferDrainTimeout)); + } + + @Test + void getBufferDrainTimeout_returns_buffer_shutdownOptions_bufferDrainTimeout_if_provided() { + final PipelineShutdown objectUnderTest = createObjectUnderTest(); + Duration bufferDrainTimeoutFromOptions = Duration.ofSeconds(random.nextInt(100) + 100); + when(dataPrepperShutdownOptions.getBufferDrainTimeout()).thenReturn(bufferDrainTimeoutFromOptions); + objectUnderTest.shutdown(dataPrepperShutdownOptions); + assertThat(objectUnderTest.getBufferDrainTimeout(), equalTo(bufferDrainTimeoutFromOptions)); + } +} \ No newline at end of file diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineTests.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineTests.java index c2e0ad769f..6faeed0f0f 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/PipelineTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/PipelineTests.java @@ -3,18 +3,26 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; +import org.opensearch.dataprepper.core.pipeline.common.FutureHelper; +import org.opensearch.dataprepper.core.pipeline.common.TestProcessor; +import org.opensearch.dataprepper.core.pipeline.router.Router; +import org.opensearch.dataprepper.core.pipeline.router.RouterCopyRecordStrategy; +import org.opensearch.dataprepper.core.pipeline.router.RouterGetRecordStrategy; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactory; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.configuration.PluginSetting; -import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.event.DefaultEventHandle; +import org.opensearch.dataprepper.model.event.EventFactory; import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.record.Record; @@ -24,18 +32,11 @@ import org.opensearch.dataprepper.model.source.coordinator.UsesSourceCoordination; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.UsesEnhancedSourceCoordination; -import org.opensearch.dataprepper.parser.DataFlowComponent; -import org.opensearch.dataprepper.pipeline.common.FutureHelper; -import org.opensearch.dataprepper.pipeline.common.TestProcessor; -import org.opensearch.dataprepper.pipeline.router.Router; -import org.opensearch.dataprepper.pipeline.router.RouterCopyRecordStrategy; -import org.opensearch.dataprepper.pipeline.router.RouterGetRecordStrategy; -import org.opensearch.dataprepper.plugins.test.TestSink; -import org.opensearch.dataprepper.plugins.test.TestSource; import org.opensearch.dataprepper.plugins.TestSourceWithCoordination; import org.opensearch.dataprepper.plugins.TestSourceWithEnhancedCoordination; import org.opensearch.dataprepper.plugins.buffer.blockingbuffer.BlockingBuffer; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactory; +import org.opensearch.dataprepper.plugins.test.TestSink; +import org.opensearch.dataprepper.plugins.test.TestSource; import java.time.Duration; import java.time.Instant; @@ -93,9 +94,9 @@ void setup() { eventFactory = mock(EventFactory.class); acknowledgementSetManager = mock(AcknowledgementSetManager.class); sourceCoordinatorFactory = mock(SourceCoordinatorFactory.class); - processorShutdownTimeout = Duration.ofSeconds(Math.abs(new Random().nextInt(10))); - sinkShutdownTimeout = Duration.ofSeconds(Math.abs(new Random().nextInt(10))); - peerForwarderDrainTimeout = Duration.ofSeconds(Math.abs(new Random().nextInt(10))); + processorShutdownTimeout = Duration.ofMillis(Math.abs(new Random().nextInt(10))); + sinkShutdownTimeout = Duration.ofMillis(Math.abs(new Random().nextInt(10))); + peerForwarderDrainTimeout = Duration.ofMillis(Math.abs(new Random().nextInt(10))); } @AfterEach @@ -620,4 +621,33 @@ void shutdown_does_not_call_removed_PipelineObservers() { testPipeline.shutdown(); verifyNoInteractions(pipelineObserver); } + + @Test + void isForceStopReadingBuffers_returns_false_if_not_in_shutdown() { + final Source> testSource = new TestSource(); + final DataFlowComponent sinkDataFlowComponent = mock(DataFlowComponent.class); + final TestSink testSink = new TestSink(); + when(sinkDataFlowComponent.getComponent()).thenReturn(testSink); + testPipeline = new Pipeline(TEST_PIPELINE_NAME, testSource, new BlockingBuffer(TEST_PIPELINE_NAME), + Collections.emptyList(), Collections.singletonList(sinkDataFlowComponent), router, + eventFactory, acknowledgementSetManager, sourceCoordinatorFactory, TEST_PROCESSOR_THREADS, TEST_READ_BATCH_TIMEOUT, + processorShutdownTimeout, sinkShutdownTimeout, peerForwarderDrainTimeout); + assertThat(testPipeline.isForceStopReadingBuffers(), equalTo(false)); + } + + @Test + void isForceStopReadingBuffers_returns_true_if_bufferReadTimeout_is_exceeded() throws InterruptedException { + final Source> testSource = new TestSource(); + final DataFlowComponent sinkDataFlowComponent = mock(DataFlowComponent.class); + final TestSink testSink = new TestSink(); + when(sinkDataFlowComponent.getComponent()).thenReturn(testSink); + testPipeline = new Pipeline(TEST_PIPELINE_NAME, testSource, new BlockingBuffer(TEST_PIPELINE_NAME), + Collections.emptyList(), Collections.singletonList(sinkDataFlowComponent), router, + eventFactory, acknowledgementSetManager, sourceCoordinatorFactory, TEST_PROCESSOR_THREADS, TEST_READ_BATCH_TIMEOUT, + processorShutdownTimeout, sinkShutdownTimeout, peerForwarderDrainTimeout); + + testPipeline.shutdown(DataPrepperShutdownOptions.builder().withBufferReadTimeout(Duration.ofMillis(1)).build()); + Thread.sleep(2); + assertThat(testPipeline.isForceStopReadingBuffers(), is(true)); + } } diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/ProcessWorkerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/ProcessWorkerTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/ProcessWorkerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/ProcessWorkerTest.java index 455da07a93..230bb32780 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/ProcessWorkerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/ProcessWorkerTest.java @@ -1,4 +1,4 @@ -package org.opensearch.dataprepper.pipeline; +package org.opensearch.dataprepper.core.pipeline; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -6,6 +6,8 @@ import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.pipeline.common.FutureHelper; +import org.opensearch.dataprepper.core.pipeline.common.FutureHelperResult; import org.opensearch.dataprepper.model.CheckpointState; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import org.opensearch.dataprepper.model.buffer.Buffer; @@ -16,8 +18,6 @@ import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.Source; -import org.opensearch.dataprepper.pipeline.common.FutureHelper; -import org.opensearch.dataprepper.pipeline.common.FutureHelperResult; import java.time.Duration; import java.util.ArrayList; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/FutureHelperResultTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperResultTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/FutureHelperResultTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperResultTest.java index bbda2d2e9e..6ae790baba 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/FutureHelperResultTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperResultTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; import org.junit.Before; import org.junit.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/FutureHelperTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/FutureHelperTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperTest.java index ba8a9714de..6e894625c2 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/FutureHelperTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/FutureHelperTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; import org.junit.Before; import org.junit.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadPoolExecutorTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadPoolExecutorTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadPoolExecutorTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadPoolExecutorTest.java index c7c35fb6f8..8b8dd00f16 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/PipelineThreadPoolExecutorTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/PipelineThreadPoolExecutorTest.java @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; -import org.opensearch.dataprepper.pipeline.Pipeline; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.pipeline.Pipeline; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/TestProcessor.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/TestProcessor.java similarity index 94% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/TestProcessor.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/TestProcessor.java index 19c8ea525b..f0ae429bb9 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/common/TestProcessor.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/common/TestProcessor.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.common; +package org.opensearch.dataprepper.core.pipeline.common; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.SingleThread; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/DataFlowComponentRouterTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/DataFlowComponentRouterTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/DataFlowComponentRouterTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/DataFlowComponentRouterTest.java index 1ea74afe70..9ba41e0731 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/DataFlowComponentRouterTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/DataFlowComponentRouterTest.java @@ -3,16 +3,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.model.record.Record; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.parser.DataFlowComponent; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; +import org.opensearch.dataprepper.model.record.Record; import java.util.ArrayList; import java.util.Collection; @@ -27,12 +27,12 @@ import java.util.stream.IntStream; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyCollection; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import static org.mockito.Mockito.lenient; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyCollection; @ExtendWith(MockitoExtension.class) class DataFlowComponentRouterTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouteEventEvaluatorTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouteEventEvaluatorTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouteEventEvaluatorTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouteEventEvaluatorTest.java index b0198e4285..2c6bad4e9d 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouteEventEvaluatorTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouteEventEvaluatorTest.java @@ -3,11 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.model.configuration.ConditionalRoute; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.record.Record; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -18,6 +15,9 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.model.configuration.ConditionalRoute; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; import java.util.Collection; import java.util.Collections; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterCopyRecordStrategyTests.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterCopyRecordStrategyTests.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterCopyRecordStrategyTests.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterCopyRecordStrategyTests.java index c971cd5b8d..aedf1f60a5 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterCopyRecordStrategyTests.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterCopyRecordStrategyTests.java @@ -3,50 +3,50 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.model.record.Record; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.parser.DataFlowComponent; -import org.opensearch.dataprepper.pipeline.PipelineConnector; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; +import org.opensearch.dataprepper.core.pipeline.PipelineConnector; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.event.DefaultEventHandle; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventHandle; +import org.opensearch.dataprepper.model.event.EventBuilder; +import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.event.EventMetadata; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.record.Record; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Map; -import java.util.Iterator; import java.util.HashMap; +import java.util.Iterator; import java.util.List; -import java.util.ArrayList; +import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.IntStream; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.lenient; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.ArgumentMatchers.any; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.CoreMatchers.sameInstance; import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.sameInstance; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertFalse; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.event.EventFactory; -import org.opensearch.dataprepper.model.event.DefaultEventHandle; -import org.opensearch.dataprepper.model.event.EventBuilder; -import org.opensearch.dataprepper.model.event.EventMetadata; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; -import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class RouterCopyRecordStrategyTests { @@ -242,10 +242,10 @@ void test_one_record_with_acknowledgements_and_multi_components() { attachEventHandlesToRecordsIn(eventHandles); try { doAnswer((i) -> { - JacksonEvent e1 = (JacksonEvent) i.getArgument(0); - ((DefaultEventHandle)e1.getEventHandle()).addAcknowledgementSet(acknowledgementSet1); + EventHandle handle = (EventHandle) i.getArgument(0); + ((DefaultEventHandle)handle).addAcknowledgementSet(acknowledgementSet1); return null; - }).when(acknowledgementSet1).add(any(JacksonEvent.class)); + }).when(acknowledgementSet1).add(any(EventHandle.class)); } catch (Exception e){} eventBuilder = mock(EventBuilder.class); @@ -280,10 +280,10 @@ void test_multiple_records_with_acknowledgements_and_multi_components() { attachEventHandlesToRecordsIn(eventHandles); try { doAnswer((i) -> { - JacksonEvent e1 = (JacksonEvent) i.getArgument(0); - ((DefaultEventHandle)e1.getEventHandle()).addAcknowledgementSet(acknowledgementSet1); + EventHandle handle = (EventHandle) i.getArgument(0); + ((DefaultEventHandle)handle).addAcknowledgementSet(acknowledgementSet1); return null; - }).when(acknowledgementSet1).add(any(JacksonEvent.class)); + }).when(acknowledgementSet1).add(any(EventHandle.class)); } catch (Exception e){} eventBuilder = mock(EventBuilder.class); diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterFactoryTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterFactoryTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterFactoryTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterFactoryTest.java index 739367fa60..89f393fa9b 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterFactoryTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterFactoryTest.java @@ -3,30 +3,30 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.model.configuration.ConditionalRoute; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.MockedConstruction; +import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.expression.ExpressionEvaluator; -import org.opensearch.dataprepper.model.event.EventHandle; +import org.opensearch.dataprepper.model.configuration.ConditionalRoute; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventHandle; + +import java.util.Collections; +import java.util.Set; +import java.util.function.Consumer; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.mockConstruction; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockConstruction; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import org.mockito.Mock; -import org.mockito.MockedConstruction; -import org.mockito.junit.jupiter.MockitoExtension; - -import java.util.Collections; -import java.util.Set; -import java.util.function.Consumer; @ExtendWith(MockitoExtension.class) class RouterFactoryTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterTest.java similarity index 99% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterTest.java index b602df85b2..24e4e671f6 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/router/RouterTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/router/RouterTest.java @@ -3,18 +3,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.router; +package org.opensearch.dataprepper.core.pipeline.router; -import org.opensearch.dataprepper.model.record.Record; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.parser.DataFlowComponent; +import org.opensearch.dataprepper.core.parser.DataFlowComponent; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventHandle; +import org.opensearch.dataprepper.model.record.Record; import java.util.ArrayList; import java.util.Collection; @@ -24,20 +24,20 @@ import java.util.Map; import java.util.Set; import java.util.UUID; -import java.util.function.Consumer; import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import static org.mockito.Mockito.lenient; -import static org.mockito.Mockito.times; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.any; @ExtendWith(MockitoExtension.class) class RouterTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/CloudWatchMeterRegistryProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/CloudWatchMeterRegistryProviderTest.java similarity index 95% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/CloudWatchMeterRegistryProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/CloudWatchMeterRegistryProviderTest.java index 9dc744981b..0f5dd50dbb 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/CloudWatchMeterRegistryProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/CloudWatchMeterRegistryProviderTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import io.micrometer.cloudwatch2.CloudWatchMeterRegistry; import org.junit.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/DataPrepperServerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperServerTest.java similarity index 92% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/DataPrepperServerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperServerTest.java index f82ffc2660..d2f7074b9f 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/DataPrepperServerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/DataPrepperServerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.HttpContext; @@ -48,6 +48,9 @@ public class DataPrepperServerTest { @Mock private ShutdownHandler shutdownHandler; + @Mock + private GetPipelinesHandler getPipelinesHandler; + @Mock private PrometheusMeterRegistry prometheusMeterRegistry; @@ -82,7 +85,7 @@ public void testGivenValidServerWhenStartThenShouldCallServerStart() { verifyServerStart(); verify(server).createContext(eq("/metrics/prometheus"), any(PrometheusMetricsHandler.class)); verify(server).createContext(eq("/metrics/sys"), any(PrometheusMetricsHandler.class)); - verify(context, times(4)).setAuthenticator(eq(authenticator)); + verify(context, times(5)).setAuthenticator(eq(authenticator)); } @Test @@ -93,7 +96,7 @@ public void testGivenValidServerWhenStartThenShouldCallServerStart_NullPrometheu dataPrepperServer.start(); verifyServerStart(); - verify(context, times(2)).setAuthenticator(eq(authenticator)); + verify(context, times(3)).setAuthenticator(eq(authenticator)); } @Test @@ -145,6 +148,7 @@ private void verifyServerStart() { verify(httpServerProvider).get(); verify(server).createContext("/list", listPipelinesHandler); verify(server).createContext(eq("/shutdown"), eq(shutdownHandler)); + verify(server).createContext(eq("/pipelines"), eq(getPipelinesHandler)); final ArgumentCaptor executorServiceArgumentCaptor = ArgumentCaptor.forClass(ExecutorService.class); verify(server).setExecutor(executorServiceArgumentCaptor.capture()); final ExecutorService actualExecutorService = executorServiceArgumentCaptor.getValue(); @@ -158,6 +162,6 @@ private void verifyServerStart() { } private DataPrepperServer createObjectUnderTest(final PrometheusMeterRegistry prometheusMeterRegistry, final Authenticator authenticator) { - return new DataPrepperServer(httpServerProvider, listPipelinesHandler, shutdownHandler, prometheusMeterRegistry, authenticator); + return new DataPrepperServer(httpServerProvider, listPipelinesHandler, shutdownHandler, getPipelinesHandler, prometheusMeterRegistry, authenticator); } } diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/GetPipelinesHandlerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/GetPipelinesHandlerTest.java new file mode 100644 index 0000000000..bf0e160774 --- /dev/null +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/GetPipelinesHandlerTest.java @@ -0,0 +1,126 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.pipeline.server; + +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.pipeline.PipelinesProvider; +import org.opensearch.dataprepper.model.configuration.DataPrepperVersion; +import org.opensearch.dataprepper.model.configuration.PipelineModel; +import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.configuration.SinkModel; + +import javax.ws.rs.HttpMethod; +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class GetPipelinesHandlerTest { + @Mock + private PipelinesProvider pipelinesProvider; + @Mock + private HttpExchange httpExchange; + + @Mock + private OutputStream outputStream; + + @BeforeEach + public void beforeEach() { + when(httpExchange.getResponseBody()) + .thenReturn(outputStream); + } + + private GetPipelinesHandler createObjectUnderTest() { + return new GetPipelinesHandler(pipelinesProvider); + } + + @ParameterizedTest + @ValueSource(strings = { HttpMethod.GET }) + public void testGivenPipelinesThenResponseWritten(String httpMethod) throws IOException { + final String pipelineName = "test-pipeline"; + final Headers headers = mock(Headers.class); + doNothing().when(headers).add(anyString(), anyString()); + final DataPrepperVersion version = DataPrepperVersion.parse("2.0"); + final PluginModel source = new PluginModel("testSource", (Map) null); + final List processors = Collections.singletonList(new PluginModel("testProcessor", (Map) null)); + final List sinks = Collections.singletonList(new SinkModel("testSink", Collections.emptyList(), null, Collections.emptyList(), Collections.emptyList(), null)); + final PipelineModel pipelineModel = new PipelineModel(source, null, processors, null, sinks, 8, 50); + + final PipelinesDataFlowModel pipelinesDataFlowModel = new PipelinesDataFlowModel(version, Collections.singletonMap(pipelineName, pipelineModel)); + + when(pipelinesProvider.getPipelinesDataFlowModel()) + .thenReturn(pipelinesDataFlowModel); + when(httpExchange.getResponseHeaders()) + .thenReturn(headers); + when(httpExchange.getRequestMethod()) + .thenReturn(httpMethod); + + final GetPipelinesHandler handler = createObjectUnderTest(); + + handler.handle(httpExchange); + + verify(headers) + .add(eq("Content-Type"), eq("text/plain; charset=UTF-8")); + verify(httpExchange) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_OK), anyLong()); + verify(outputStream) + .write(any(byte[].class)); + verify(outputStream) + .close(); + } + + @ParameterizedTest + @ValueSource(strings = { HttpMethod.DELETE, HttpMethod.PATCH, HttpMethod.PUT, HttpMethod.POST }) + public void testGivenProhibitedHttpMethodThenErrorResponseWritten(String httpMethod) throws IOException { + final GetPipelinesHandler handler = createObjectUnderTest(); + + when(httpExchange.getRequestMethod()) + .thenReturn(httpMethod); + + handler.handle(httpExchange); + + verify(httpExchange) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_BAD_METHOD), eq(0L)); + verify(outputStream) + .close(); + } + + @ParameterizedTest + @ValueSource(strings = { HttpMethod.GET }) + public void testGivenExceptionThrownThenErrorResponseWritten(String httpMethod) throws IOException { + when(httpExchange.getRequestMethod()) + .thenReturn(httpMethod); + + pipelinesProvider = null; + final GetPipelinesHandler handler = createObjectUnderTest(); + handler.handle(httpExchange); + + verify(httpExchange) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_INTERNAL_ERROR), eq(0L)); + verify(outputStream) + .close(); + } +} diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/HttpServerProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/HttpServerProviderTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/HttpServerProviderTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/HttpServerProviderTest.java index 6efe35e3a0..ad4f96de9e 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/HttpServerProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/HttpServerProviderTest.java @@ -3,9 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.HttpsConfigurator; import com.sun.net.httpserver.HttpsServer; @@ -14,6 +13,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import java.io.IOException; import java.net.DatagramSocket; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/ListPipelinesHandlerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/ListPipelinesHandlerTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/ListPipelinesHandlerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/ListPipelinesHandlerTest.java index 5ea1dd867c..d7fac2afc5 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/ListPipelinesHandlerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/ListPipelinesHandlerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpExchange; @@ -13,8 +13,8 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.pipeline.Pipeline; -import org.opensearch.dataprepper.pipeline.PipelinesProvider; +import org.opensearch.dataprepper.core.pipeline.Pipeline; +import org.opensearch.dataprepper.core.pipeline.PipelinesProvider; import javax.ws.rs.HttpMethod; import java.io.IOException; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/PrometheusMetricsHandlerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/PrometheusMetricsHandlerTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/PrometheusMetricsHandlerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/PrometheusMetricsHandlerTest.java index 8d10db77f2..cb6eb70bd0 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/PrometheusMetricsHandlerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/PrometheusMetricsHandlerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpExchange; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/ShutdownHandlerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/ShutdownHandlerTest.java new file mode 100644 index 0000000000..dadf3d5991 --- /dev/null +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/ShutdownHandlerTest.java @@ -0,0 +1,164 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.pipeline.server; + +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.DataPrepperShutdownOptions; +import org.opensearch.dataprepper.core.DataPrepper; + +import javax.ws.rs.HttpMethod; +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.time.Duration; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class ShutdownHandlerTest { + @Mock + private DataPrepper dataPrepper; + + @InjectMocks + private ShutdownHandler shutdownHandler; + + @Mock + private HttpExchange exchange; + + @Mock + private OutputStream responseBody; + + @BeforeEach + public void beforeEach() { + when(exchange.getResponseBody()) + .thenReturn(responseBody); + lenient().when(exchange.getRequestHeaders()) + .thenReturn(new Headers()); + } + + @ParameterizedTest + @ValueSource(strings = { HttpMethod.DELETE, HttpMethod.GET, HttpMethod.PATCH, HttpMethod.PUT }) + public void testWhenShutdownWithProhibitedHttpMethodThenErrorResponseWritten(String httpMethod) throws IOException { + when(exchange.getRequestMethod()) + .thenReturn(httpMethod); + + shutdownHandler.handle(exchange); + + verify(exchange, times(1)) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_BAD_METHOD), eq(0L)); + verify(responseBody, times(1)) + .close(); + } + + @Nested + class WithoutQueryParameters { + @BeforeEach + void setUp() { + when(exchange.getRequestURI()).thenReturn(URI.create("/shutdown")); + } + + @Test + public void testWhenShutdownWithPostRequestThenResponseWritten() throws IOException { + when(exchange.getRequestMethod()) + .thenReturn(HttpMethod.POST); + + shutdownHandler.handle(exchange); + + ArgumentCaptor shutdownOptionsArgumentCaptor = ArgumentCaptor.forClass(DataPrepperShutdownOptions.class); + verify(dataPrepper, times(1)) + .shutdownPipelines(shutdownOptionsArgumentCaptor.capture()); + verify(exchange, times(1)) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_OK), eq(0L)); + verify(responseBody, times(1)) + .close(); + verify(dataPrepper, times(1)) + .shutdownServers(); + + DataPrepperShutdownOptions actualShutdownOptions = shutdownOptionsArgumentCaptor.getValue(); + assertThat(actualShutdownOptions.getBufferDrainTimeout(), nullValue()); + assertThat(actualShutdownOptions.getBufferReadTimeout(), nullValue()); + } + + @Test + public void testHandleException() throws IOException { + when(exchange.getRequestMethod()) + .thenReturn(HttpMethod.POST); + doThrow(RuntimeException.class).when(dataPrepper).shutdownPipelines(any(DataPrepperShutdownOptions.class)); + + shutdownHandler.handle(exchange); + + verify(exchange, times(1)) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_INTERNAL_ERROR), eq(0L)); + verify(responseBody, times(1)) + .close(); + } + } + + @Nested + class WithoutShutdownQueryParameters { + @BeforeEach + void setUp() { + when(exchange.getRequestURI()).thenReturn(URI.create("/shutdown?bufferReadTimeout=1500ms&bufferDrainTimeout=20s")); + } + + @Test + public void testWhenShutdownWithPostRequestThenResponseWritten() throws IOException { + when(exchange.getRequestMethod()) + .thenReturn(HttpMethod.POST); + + shutdownHandler.handle(exchange); + + final ArgumentCaptor shutdownOptionsArgumentCaptor = ArgumentCaptor.forClass(DataPrepperShutdownOptions.class); + verify(dataPrepper, times(1)) + .shutdownPipelines(shutdownOptionsArgumentCaptor.capture()); + verify(exchange, times(1)) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_OK), eq(0L)); + verify(responseBody, times(1)) + .close(); + verify(dataPrepper, times(1)) + .shutdownServers(); + + final DataPrepperShutdownOptions actualShutdownOptions = shutdownOptionsArgumentCaptor.getValue(); + assertThat(actualShutdownOptions.getBufferDrainTimeout(), equalTo(Duration.ofSeconds(20))); + assertThat(actualShutdownOptions.getBufferReadTimeout(), equalTo(Duration.ofMillis(1500))); + } + + @Test + public void testHandleException() throws IOException { + when(exchange.getRequestMethod()) + .thenReturn(HttpMethod.POST); + doThrow(RuntimeException.class).when(dataPrepper).shutdownPipelines(any(DataPrepperShutdownOptions.class)); + + shutdownHandler.handle(exchange); + + verify(exchange, times(1)) + .sendResponseHeaders(eq(HttpURLConnection.HTTP_INTERNAL_ERROR), eq(0L)); + verify(responseBody, times(1)) + .close(); + } + } +} diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/SslUtilTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/SslUtilTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/SslUtilTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/SslUtilTest.java index d99e06e361..0c9d2dd2c1 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/SslUtilTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/SslUtilTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server; +package org.opensearch.dataprepper.core.pipeline.server; import org.junit.Test; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/config/DataPrepperServerConfigurationTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/config/DataPrepperServerConfigurationTest.java similarity index 91% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/config/DataPrepperServerConfigurationTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/config/DataPrepperServerConfigurationTest.java index c628b68527..98cb2eac94 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/config/DataPrepperServerConfigurationTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/pipeline/server/config/DataPrepperServerConfigurationTest.java @@ -3,20 +3,20 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.pipeline.server.config; +package org.opensearch.dataprepper.core.pipeline.server.config; -import org.opensearch.dataprepper.DataPrepper; -import org.opensearch.dataprepper.model.configuration.PluginModel; -import org.opensearch.dataprepper.model.configuration.PluginSetting; -import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.pipeline.PipelinesProvider; -import org.opensearch.dataprepper.pipeline.server.DataPrepperCoreAuthenticationProvider; -import org.opensearch.dataprepper.pipeline.server.ListPipelinesHandler; -import org.opensearch.dataprepper.pipeline.server.ShutdownHandler; import com.sun.net.httpserver.Authenticator; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.DataPrepper; +import org.opensearch.dataprepper.core.pipeline.PipelinesProvider; +import org.opensearch.dataprepper.core.pipeline.server.DataPrepperCoreAuthenticationProvider; +import org.opensearch.dataprepper.core.pipeline.server.ListPipelinesHandler; +import org.opensearch.dataprepper.core.pipeline.server.ShutdownHandler; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.plugin.PluginFactory; import java.util.HashMap; import java.util.Map; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/LeaseBasedSourceCoordinatorTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/LeaseBasedSourceCoordinatorTest.java similarity index 96% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/LeaseBasedSourceCoordinatorTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/LeaseBasedSourceCoordinatorTest.java index 965a0c8786..b2743cdbf6 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/LeaseBasedSourceCoordinatorTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/LeaseBasedSourceCoordinatorTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination; +package org.opensearch.dataprepper.core.sourcecoordination; import io.micrometer.core.instrument.Counter; import org.junit.jupiter.api.BeforeEach; @@ -15,6 +15,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.source.SourceCoordinationStore; import org.opensearch.dataprepper.model.source.coordinator.PartitionIdentifier; @@ -26,7 +27,6 @@ import org.opensearch.dataprepper.model.source.coordinator.exceptions.PartitionNotOwnedException; import org.opensearch.dataprepper.model.source.coordinator.exceptions.PartitionUpdateException; import org.opensearch.dataprepper.model.source.coordinator.exceptions.UninitializedSourceCoordinatorException; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.test.helper.ReflectivelySetField; import java.net.InetAddress; @@ -56,23 +56,23 @@ import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.DEFAULT_LEASE_TIMEOUT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.FORCE_SUPPLIER_AFTER_DURATION; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.GLOBAL_STATE_SOURCE_PARTITION_KEY_FOR_CREATING_PARTITIONS; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.GLOBAL_STATE_TYPE; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.NO_PARTITIONS_ACQUIRED_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_ACQUIRED_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_CLOSED_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_COMPLETED_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_DELETED; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_CREATED_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_CREATION_SUPPLIER_INVOCATION_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_NOT_FOUND_ERROR_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_NOT_OWNED_ERROR_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_OWNERSHIP_GIVEN_UP_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_TYPE; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_UPDATE_ERROR_COUNT; -import static org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator.SAVE_PROGRESS_STATE_INVOCATION_SUCCESS_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.DEFAULT_LEASE_TIMEOUT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.FORCE_SUPPLIER_AFTER_DURATION; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.GLOBAL_STATE_SOURCE_PARTITION_KEY_FOR_CREATING_PARTITIONS; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.GLOBAL_STATE_TYPE; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.NO_PARTITIONS_ACQUIRED_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_ACQUIRED_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_CLOSED_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_COMPLETED_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITIONS_DELETED; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_CREATED_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_CREATION_SUPPLIER_INVOCATION_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_NOT_FOUND_ERROR_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_NOT_OWNED_ERROR_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_OWNERSHIP_GIVEN_UP_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_TYPE; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.PARTITION_UPDATE_ERROR_COUNT; +import static org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator.SAVE_PROGRESS_STATE_INVOCATION_SUCCESS_COUNT; @ExtendWith(MockitoExtension.class) public class LeaseBasedSourceCoordinatorTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/PartitionManagerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/PartitionManagerTest.java similarity index 97% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/PartitionManagerTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/PartitionManagerTest.java index 7d0065f45a..e41a327356 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/PartitionManagerTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/PartitionManagerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination; +package org.opensearch.dataprepper.core.sourcecoordination; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -11,8 +11,8 @@ import java.util.Optional; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; public class PartitionManagerTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorFactoryTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorFactoryTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorFactoryTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorFactoryTest.java index 2e6d39dfd1..72ebbf8757 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/SourceCoordinatorFactoryTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/SourceCoordinatorFactoryTest.java @@ -3,19 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination; +package org.opensearch.dataprepper.core.sourcecoordination; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.plugin.PluginFactory; import org.opensearch.dataprepper.model.source.SourceCoordinationStore; import org.opensearch.dataprepper.model.source.coordinator.SourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourcePartition; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; import java.util.Optional; import java.util.UUID; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinatorTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinatorTest.java similarity index 98% rename from data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinatorTest.java rename to data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinatorTest.java index 6608811945..ff3e4ec9da 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinatorTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/core/sourcecoordination/enhanced/EnhancedLeaseBasedSourceCoordinatorTest.java @@ -3,19 +3,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.sourcecoordination.enhanced; +package org.opensearch.dataprepper.core.sourcecoordination.enhanced; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.source.SourceCoordinationStore; import org.opensearch.dataprepper.model.source.coordinator.SourcePartitionStatus; import org.opensearch.dataprepper.model.source.coordinator.SourcePartitionStoreItem; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourcePartition; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; import java.time.Duration; import java.util.Optional; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/logging/SensitiveArgumentMaskingConverterTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/logging/SensitiveArgumentMaskingConverterTest.java index e62228641d..cf4655cb6d 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/logging/SensitiveArgumentMaskingConverterTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/logging/SensitiveArgumentMaskingConverterTest.java @@ -24,9 +24,9 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.opensearch.dataprepper.logging.SensitiveArgumentMaskingConverter.MASK_PATTERN; import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; import static org.opensearch.dataprepper.logging.DataPrepperMarkers.SENSITIVE; -import static org.opensearch.dataprepper.logging.SensitiveArgumentMaskingConverter.MASK_PATTERN; @ExtendWith(MockitoExtension.class) class SensitiveArgumentMaskingConverterTest { diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/ShutdownHandlerTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/ShutdownHandlerTest.java deleted file mode 100644 index 19f1e839e1..0000000000 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/server/ShutdownHandlerTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.opensearch.dataprepper.pipeline.server; - -import com.sun.net.httpserver.Headers; -import com.sun.net.httpserver.HttpExchange; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.DataPrepper; - -import javax.ws.rs.HttpMethod; -import java.io.IOException; -import java.io.OutputStream; -import java.net.HttpURLConnection; - -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.lenient; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@ExtendWith(MockitoExtension.class) -public class ShutdownHandlerTest { - @Mock - private DataPrepper dataPrepper; - - @InjectMocks - private ShutdownHandler shutdownHandler; - - @Mock - private HttpExchange exchange; - - @Mock - private OutputStream responseBody; - - @BeforeEach - public void beforeEach() { - when(exchange.getResponseBody()) - .thenReturn(responseBody); - lenient().when(exchange.getRequestHeaders()) - .thenReturn(new Headers()); - } - - @Test - public void testWhenShutdownWithPostRequestThenResponseWritten() throws IOException { - when(exchange.getRequestMethod()) - .thenReturn(HttpMethod.POST); - - shutdownHandler.handle(exchange); - - verify(dataPrepper, times(1)) - .shutdownPipelines(); - verify(exchange, times(1)) - .sendResponseHeaders(eq(HttpURLConnection.HTTP_OK), eq(0L)); - verify(responseBody, times(1)) - .close(); - verify(dataPrepper, times(1)) - .shutdownServers(); - } - - @ParameterizedTest - @ValueSource(strings = { HttpMethod.DELETE, HttpMethod.GET, HttpMethod.PATCH, HttpMethod.PUT }) - public void testWhenShutdownWithProhibitedHttpMethodThenErrorResponseWritten(String httpMethod) throws IOException { - when(exchange.getRequestMethod()) - .thenReturn(httpMethod); - - shutdownHandler.handle(exchange); - - verify(exchange, times(1)) - .sendResponseHeaders(eq(HttpURLConnection.HTTP_BAD_METHOD), eq(0L)); - verify(responseBody, times(1)) - .close(); - } - - @Test - public void testHandleException() throws IOException { - when(exchange.getRequestMethod()) - .thenReturn(HttpMethod.POST); - doThrow(RuntimeException.class).when(dataPrepper).shutdownPipelines(); - - shutdownHandler.handle(exchange); - - verify(exchange, times(1)) - .sendResponseHeaders(eq(HttpURLConnection.HTTP_INTERNAL_ERROR), eq(0L)); - verify(responseBody, times(1)) - .close(); - } -} diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProviderTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProviderTest.java index c850807b91..c4076ef9c7 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProviderTest.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/HttpBasicDataPrepperCoreAuthenticationProviderTest.java @@ -5,11 +5,11 @@ package org.opensearch.dataprepper.plugins; -import org.opensearch.dataprepper.pipeline.server.HttpBasicAuthenticationConfig; import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.BasicAuthenticator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.core.pipeline.server.HttpBasicAuthenticationConfig; import java.util.UUID; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithCoordination.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithCoordination.java index 7fb73917cc..f9dc812342 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithCoordination.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithCoordination.java @@ -8,9 +8,9 @@ import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.model.source.coordinator.UsesSourceCoordination; import org.opensearch.dataprepper.model.source.Source; import org.opensearch.dataprepper.model.source.coordinator.SourceCoordinator; +import org.opensearch.dataprepper.model.source.coordinator.UsesSourceCoordination; import java.util.Iterator; import java.util.List; diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithEnhancedCoordination.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithEnhancedCoordination.java index 1dd4625274..496d91137f 100644 --- a/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithEnhancedCoordination.java +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/plugins/TestSourceWithEnhancedCoordination.java @@ -5,6 +5,7 @@ package org.opensearch.dataprepper.plugins; +import org.opensearch.dataprepper.core.sourcecoordination.SourceCoordinatorFactoryTest; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.record.Record; @@ -13,7 +14,6 @@ import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourcePartition; import org.opensearch.dataprepper.model.source.coordinator.enhanced.UsesEnhancedSourceCoordination; -import org.opensearch.dataprepper.sourcecoordination.SourceCoordinatorFactoryTest; import java.util.Iterator; import java.util.List; diff --git a/data-prepper-core/src/test/resources/org/opensearch/dataprepper/parser/model/heap_with_reset.yaml b/data-prepper-core/src/test/resources/org/opensearch/dataprepper/core/parser/model/heap_with_reset.yaml similarity index 100% rename from data-prepper-core/src/test/resources/org/opensearch/dataprepper/parser/model/heap_with_reset.yaml rename to data-prepper-core/src/test/resources/org/opensearch/dataprepper/core/parser/model/heap_with_reset.yaml diff --git a/data-prepper-core/src/test/resources/org/opensearch/dataprepper/parser/model/heap_without_reset.yaml b/data-prepper-core/src/test/resources/org/opensearch/dataprepper/core/parser/model/heap_without_reset.yaml similarity index 100% rename from data-prepper-core/src/test/resources/org/opensearch/dataprepper/parser/model/heap_without_reset.yaml rename to data-prepper-core/src/test/resources/org/opensearch/dataprepper/core/parser/model/heap_without_reset.yaml diff --git a/data-prepper-event/build.gradle b/data-prepper-event/build.gradle index 168d330579..5dc39d92a6 100644 --- a/data-prepper-event/build.gradle +++ b/data-prepper-event/build.gradle @@ -19,5 +19,7 @@ dependencies { implementation(libs.spring.context) { exclude group: 'commons-logging', module: 'commons-logging' } + implementation 'com.fasterxml.jackson.core:jackson-databind' + implementation libs.caffeine testImplementation libs.commons.lang3 } diff --git a/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/CachingEventKeyFactory.java b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/CachingEventKeyFactory.java new file mode 100644 index 0000000000..df7e7c6255 --- /dev/null +++ b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/CachingEventKeyFactory.java @@ -0,0 +1,68 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.event; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; +import org.opensearch.dataprepper.model.event.EventKey; +import org.opensearch.dataprepper.model.event.EventKeyFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; +import java.util.Objects; + +class CachingEventKeyFactory implements EventKeyFactory { + private static final Logger log = LoggerFactory.getLogger(CachingEventKeyFactory.class); + private final EventKeyFactory delegateEventKeyFactory; + private final Cache cache; + + private static class CacheKey { + private final String key; + private final EventAction[] eventActions; + + private CacheKey(final String key, final EventAction[] eventActions) { + this.key = key; + this.eventActions = eventActions; + } + + @Override + public boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + final CacheKey cacheKey = (CacheKey) o; + return Objects.equals(key, cacheKey.key) && Arrays.equals(eventActions, cacheKey.eventActions); + } + + @Override + public int hashCode() { + int result = Objects.hash(key); + result = 31 * result + Arrays.hashCode(eventActions); + return result; + } + } + + CachingEventKeyFactory(final EventKeyFactory delegateEventKeyFactory, final EventConfiguration eventConfiguration) { + Objects.requireNonNull(delegateEventKeyFactory); + Objects.requireNonNull(eventConfiguration); + + log.debug("Configured to cache a maximum of {} event keys.", eventConfiguration.getMaximumCachedKeys()); + + this.delegateEventKeyFactory = delegateEventKeyFactory; + cache = Caffeine.newBuilder() + .maximumSize(eventConfiguration.getMaximumCachedKeys()) + .build(); + } + + @Override + public EventKey createEventKey(final String key, final EventAction... forActions) { + return getOrCreateEventKey(new CacheKey(key, forActions)); + } + + private EventKey getOrCreateEventKey(final CacheKey cacheKey) { + return cache.asMap().computeIfAbsent(cacheKey, key -> delegateEventKeyFactory.createEventKey(key.key, key.eventActions)); + } +} diff --git a/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/DefaultEventKeyFactory.java b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/DefaultEventKeyFactory.java index 605b5bcb41..c46ea75985 100644 --- a/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/DefaultEventKeyFactory.java +++ b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/DefaultEventKeyFactory.java @@ -9,10 +9,7 @@ import org.opensearch.dataprepper.model.event.EventKeyFactory; import org.opensearch.dataprepper.model.event.InternalOnlyEventKeyBridge; -import javax.inject.Named; - -@Named -public class DefaultEventKeyFactory implements EventKeyFactory { +class DefaultEventKeyFactory implements EventKeyFactory { @Override public EventKey createEventKey(final String key, final EventAction... forActions) { return InternalOnlyEventKeyBridge.createEventKey(key, forActions); diff --git a/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventConfiguration.java b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventConfiguration.java new file mode 100644 index 0000000000..754a985af3 --- /dev/null +++ b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventConfiguration.java @@ -0,0 +1,33 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.event; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Data Prepper configurations for events. + */ +public class EventConfiguration { + @JsonProperty("maximum_cached_keys") + private Integer maximumCachedKeys = 512; + + public static EventConfiguration defaultConfiguration() { + return new EventConfiguration(); + } + + /** + * Gets the maximum number of cached {@link org.opensearch.dataprepper.model.event.EventKey} objects. + * + * @return the cache maximum count + */ + Integer getMaximumCachedKeys() { + return maximumCachedKeys; + } + + void setMaximumCachedKeys(final Integer maximumCachedKeys) { + this.maximumCachedKeys = maximumCachedKeys; + } +} diff --git a/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventConfigurationContainer.java b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventConfigurationContainer.java new file mode 100644 index 0000000000..cc7da76427 --- /dev/null +++ b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventConfigurationContainer.java @@ -0,0 +1,10 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.event; + +public interface EventConfigurationContainer { + EventConfiguration getEventConfiguration(); +} diff --git a/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventFactoryApplicationConfiguration.java b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventFactoryApplicationConfiguration.java new file mode 100644 index 0000000000..cf33c3e8d2 --- /dev/null +++ b/data-prepper-event/src/main/java/org/opensearch/dataprepper/core/event/EventFactoryApplicationConfiguration.java @@ -0,0 +1,40 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.event; + +import org.opensearch.dataprepper.model.event.EventKeyFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +import javax.inject.Named; + +@Configuration +class EventFactoryApplicationConfiguration { + @Bean + EventConfiguration eventConfiguration(@Autowired(required = false) final EventConfigurationContainer eventConfigurationContainer) { + if(eventConfigurationContainer == null || eventConfigurationContainer.getEventConfiguration() == null) + return EventConfiguration.defaultConfiguration(); + return eventConfigurationContainer.getEventConfiguration(); + } + + @Bean(name = "innerEventKeyFactory") + EventKeyFactory innerEventKeyFactory() { + return new DefaultEventKeyFactory(); + } + + @Primary + @Bean(name = "eventKeyFactory") + EventKeyFactory eventKeyFactory( + @Named("innerEventKeyFactory") final EventKeyFactory eventKeyFactory, + final EventConfiguration eventConfiguration) { + if(eventConfiguration.getMaximumCachedKeys() <= 0) { + return eventKeyFactory; + } + return new CachingEventKeyFactory(eventKeyFactory, eventConfiguration); + } +} diff --git a/data-prepper-event/src/test/java/org/opensearch/dataprepper/core/event/CachingEventKeyFactoryTest.java b/data-prepper-event/src/test/java/org/opensearch/dataprepper/core/event/CachingEventKeyFactoryTest.java new file mode 100644 index 0000000000..30b74183fb --- /dev/null +++ b/data-prepper-event/src/test/java/org/opensearch/dataprepper/core/event/CachingEventKeyFactoryTest.java @@ -0,0 +1,162 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.event; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.model.event.EventKey; +import org.opensearch.dataprepper.model.event.EventKeyFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static org.hamcrest.CoreMatchers.sameInstance; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.atLeast; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class CachingEventKeyFactoryTest { + private static final int CACHE_SIZE = 2; + @Mock + private EventKeyFactory innerEventKeyFactory; + + @Mock + private EventConfiguration eventConfiguration; + + @BeforeEach + void setUp() { + when(eventConfiguration.getMaximumCachedKeys()).thenReturn(CACHE_SIZE); + } + + private EventKeyFactory createObjectUnderTest() { + return new CachingEventKeyFactory(innerEventKeyFactory, eventConfiguration); + } + + @ParameterizedTest + @EnumSource(EventKeyFactory.EventAction.class) + void createEventKey_with_EventAction_returns_inner_createEventKey(final EventKeyFactory.EventAction eventAction) { + final String key = UUID.randomUUID().toString(); + final EventKey eventKey = mock(EventKey.class); + + when(innerEventKeyFactory.createEventKey(key, eventAction)).thenReturn(eventKey); + + final EventKey actualEventKey = createObjectUnderTest().createEventKey(key, eventAction); + assertThat(actualEventKey, sameInstance(eventKey)); + } + + @Test + void createEventKey_returns_inner_createEventKey() { + final String key = UUID.randomUUID().toString(); + final EventKey eventKey = mock(EventKey.class); + + when(innerEventKeyFactory.createEventKey(key, EventKeyFactory.EventAction.ALL)).thenReturn(eventKey); + final EventKey actualEventKey = createObjectUnderTest().createEventKey(key); + assertThat(actualEventKey, sameInstance(eventKey)); + } + + @ParameterizedTest + @EnumSource(EventKeyFactory.EventAction.class) + void createEventKey_with_EventAction_returns_same_instance_without_calling_inner_createEventKey_for_same_key(final EventKeyFactory.EventAction eventAction) { + final String key = UUID.randomUUID().toString(); + final EventKey eventKey = mock(EventKey.class); + + when(innerEventKeyFactory.createEventKey(key, eventAction)).thenReturn(eventKey); + + final EventKeyFactory objectUnderTest = createObjectUnderTest(); + final EventKey actualKey = objectUnderTest.createEventKey(key, eventAction); + final EventKey actualKey2 = objectUnderTest.createEventKey(key, eventAction); + + assertThat(actualKey, sameInstance(eventKey)); + assertThat(actualKey2, sameInstance(eventKey)); + + verify(innerEventKeyFactory).createEventKey(key, eventAction); + } + + @Test + void createEventKey_returns_same_instance_without_calling_inner_createEventKey_for_same_key() { + final String key = UUID.randomUUID().toString(); + final EventKey eventKey = mock(EventKey.class); + + when(innerEventKeyFactory.createEventKey(key, EventKeyFactory.EventAction.ALL)).thenReturn(eventKey); + + final EventKeyFactory objectUnderTest = createObjectUnderTest(); + final EventKey actualKey = objectUnderTest.createEventKey(key); + final EventKey actualKey2 = objectUnderTest.createEventKey(key); + + assertThat(actualKey, sameInstance(eventKey)); + assertThat(actualKey2, sameInstance(eventKey)); + + verify(innerEventKeyFactory).createEventKey(key, EventKeyFactory.EventAction.ALL); + } + + @Test + void createEventKey_with_EventAction_returns_different_values_for_different_keys() { + final String key1 = UUID.randomUUID().toString(); + final String key2 = UUID.randomUUID().toString(); + final EventKey eventKey1 = mock(EventKey.class); + final EventKey eventKey2 = mock(EventKey.class); + + when(innerEventKeyFactory.createEventKey(key1, EventKeyFactory.EventAction.ALL)).thenReturn(eventKey1); + when(innerEventKeyFactory.createEventKey(key2, EventKeyFactory.EventAction.ALL)).thenReturn(eventKey2); + + final EventKeyFactory objectUnderTest = createObjectUnderTest(); + final EventKey actualEventKey1 = objectUnderTest.createEventKey(key1, EventKeyFactory.EventAction.ALL); + assertThat(actualEventKey1, sameInstance(eventKey1)); + final EventKey actualEventKey2 = objectUnderTest.createEventKey(key2, EventKeyFactory.EventAction.ALL); + assertThat(actualEventKey2, sameInstance(eventKey2)); + } + + @Test + void createEventKey_with_EventAction_returns_different_values_for_different_actions() { + final String key = UUID.randomUUID().toString(); + final EventKey eventKeyGet = mock(EventKey.class); + final EventKey eventKeyPut = mock(EventKey.class); + + when(innerEventKeyFactory.createEventKey(key, EventKeyFactory.EventAction.GET)).thenReturn(eventKeyGet); + when(innerEventKeyFactory.createEventKey(key, EventKeyFactory.EventAction.PUT)).thenReturn(eventKeyPut); + + final EventKeyFactory objectUnderTest = createObjectUnderTest(); + final EventKey actualEventKeyGet = objectUnderTest.createEventKey(key, EventKeyFactory.EventAction.GET); + assertThat(actualEventKeyGet, sameInstance(eventKeyGet)); + final EventKey actualEventKeyPut = objectUnderTest.createEventKey(key, EventKeyFactory.EventAction.PUT); + assertThat(actualEventKeyPut, sameInstance(eventKeyPut)); + } + + @Test + void createEventKey_expires_after_reaching_maximum() { + + final List keys = new ArrayList<>(CACHE_SIZE); + for (int i = 0; i < CACHE_SIZE * 2; i++) { + final String key = UUID.randomUUID().toString(); + final EventKey eventKey = mock(EventKey.class); + when(innerEventKeyFactory.createEventKey(key, EventKeyFactory.EventAction.ALL)).thenReturn(eventKey); + keys.add(key); + } + + final EventKeyFactory objectUnderTest = createObjectUnderTest(); + + final int numberOfIterations = 20; + for (int i = 0; i < numberOfIterations; i++) { + for (final String key : keys) { + objectUnderTest.createEventKey(key); + } + } + + verify(innerEventKeyFactory, atLeast(CACHE_SIZE + 1)) + .createEventKey(anyString(), eq(EventKeyFactory.EventAction.ALL)); + } +} \ No newline at end of file diff --git a/data-prepper-event/src/test/java/org/opensearch/dataprepper/core/event/EventFactoryApplicationConfigurationTest.java b/data-prepper-event/src/test/java/org/opensearch/dataprepper/core/event/EventFactoryApplicationConfigurationTest.java new file mode 100644 index 0000000000..2d8cc7a390 --- /dev/null +++ b/data-prepper-event/src/test/java/org/opensearch/dataprepper/core/event/EventFactoryApplicationConfigurationTest.java @@ -0,0 +1,48 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.event; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.opensearch.dataprepper.model.event.EventKeyFactory; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.sameInstance; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +class EventFactoryApplicationConfigurationTest { + private EventFactoryApplicationConfiguration createObjectUnderTest() { + return new EventFactoryApplicationConfiguration(); + } + + @ParameterizedTest + @ValueSource(ints = {-1, 0}) + void eventKeyFactory_returns_innerEventKeyFactory_if_EventConfiguration_is_cache_disabled(final int cacheMax) { + final EventKeyFactory innerEventKeyFactory = mock(EventKeyFactory.class); + final EventConfiguration eventConfiguration = mock(EventConfiguration.class); + when(eventConfiguration.getMaximumCachedKeys()).thenReturn(cacheMax); + + final EventKeyFactory actualEventKeyFactory = createObjectUnderTest().eventKeyFactory(innerEventKeyFactory, eventConfiguration); + + assertThat(actualEventKeyFactory, sameInstance(innerEventKeyFactory)); + } + + @ParameterizedTest + @ValueSource(ints = {1, 2, 512, 1_000}) + void eventKeyFactory_returns_CachingEventKeyFactory_for_cacheable_sizes(final int cacheMax) { + final EventKeyFactory innerEventKeyFactory = mock(EventKeyFactory.class); + final EventConfiguration eventConfiguration = mock(EventConfiguration.class); + when(eventConfiguration.getMaximumCachedKeys()).thenReturn(cacheMax); + + final EventKeyFactory actualEventKeyFactory = createObjectUnderTest().eventKeyFactory(innerEventKeyFactory, eventConfiguration); + + assertThat(actualEventKeyFactory, not(sameInstance(innerEventKeyFactory))); + assertThat(actualEventKeyFactory, instanceOf(CachingEventKeyFactory.class)); + } +} \ No newline at end of file diff --git a/data-prepper-expression/src/main/antlr/DataPrepperExpression.g4 b/data-prepper-expression/src/main/antlr/DataPrepperExpression.g4 index a0c5375d37..8a771a4d4b 100644 --- a/data-prepper-expression/src/main/antlr/DataPrepperExpression.g4 +++ b/data-prepper-expression/src/main/antlr/DataPrepperExpression.g4 @@ -292,6 +292,7 @@ EscapeSequence DataTypes : INTEGER | BOOLEAN + | BIG_DECIMAL | LONG | MAP | ARRAY @@ -339,6 +340,7 @@ EXPONENTLETTER ; INTEGER: 'integer'; +BIG_DECIMAL: 'big_decimal'; BOOLEAN: 'boolean'; LONG : 'long'; DOUBLE : 'double'; diff --git a/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/LiteralTypeConversionsConfiguration.java b/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/LiteralTypeConversionsConfiguration.java index cba74c994e..c24d0dbb5c 100644 --- a/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/LiteralTypeConversionsConfiguration.java +++ b/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/LiteralTypeConversionsConfiguration.java @@ -9,6 +9,7 @@ import javax.inject.Named; import java.io.Serializable; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; @@ -26,6 +27,7 @@ public Map, Function> literalTypeC Long.class, Function.identity(), ArrayList.class, Function.identity(), LinkedHashMap.class, Function.identity(), + BigDecimal.class, Function.identity(), Double.class, o -> ((Double) o).floatValue() ); } diff --git a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/ParseTreeCoercionServiceTest.java b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/ParseTreeCoercionServiceTest.java index 35f10b148c..22477521be 100644 --- a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/ParseTreeCoercionServiceTest.java +++ b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/ParseTreeCoercionServiceTest.java @@ -22,6 +22,7 @@ import org.opensearch.dataprepper.expression.util.TestObject; import org.opensearch.dataprepper.model.event.Event; +import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -113,6 +114,19 @@ void testCoerceTerminalNodeFloatType() { assertThat(result, equalTo(testFloat)); } + @Test + void testCoerceTerminalNodeBigDecimalType() { + when(token.getType()).thenReturn(DataPrepperExpressionParser.JsonPointer); + final BigDecimal testBigDecimal = new BigDecimal(new Random().nextFloat()); + when(terminalNode.getSymbol()).thenReturn(token); + when(terminalNode.getText()).thenReturn("/key"); + + final Event testEvent = createTestEvent(Map.of("key", testBigDecimal)); + final Object result = objectUnderTest.coercePrimaryTerminalNode(terminalNode, testEvent); + assertThat(result, instanceOf(BigDecimal.class)); + assertThat(result, equalTo(testBigDecimal)); + } + @ParameterizedTest @ValueSource(strings={"integer", "boolean", "long", "string", "double", "map", "array"}) void testCoerceTerminalNodeDataTypesType(String testString) { diff --git a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/TypeOfOperatorTest.java b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/TypeOfOperatorTest.java index 07e52401ff..e7a0acb6f1 100644 --- a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/TypeOfOperatorTest.java +++ b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/TypeOfOperatorTest.java @@ -20,6 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -71,6 +72,7 @@ private static Stream getTypeOfTestData() { List testArrayList = new ArrayList(); testArrayList.add(1); testArrayList.add(2); + BigDecimal bigDecimalValue = new BigDecimal(1.222); return Stream.of( Arguments.of(2, "integer", true), Arguments.of("testString", "string", true), @@ -86,6 +88,8 @@ private static Stream getTypeOfTestData() { Arguments.of("testString", "double", false), Arguments.of(2, "boolean", false), Arguments.of(2L, "map", false), + Arguments.of(2L, "big_decimal", false), + Arguments.of(bigDecimalValue, "big_decimal", true), Arguments.of(2, "array", false) ); } diff --git a/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperExecute.java b/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperExecute.java index 254c366820..88a931dfd3 100644 --- a/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperExecute.java +++ b/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperExecute.java @@ -5,6 +5,7 @@ package org.opensearch.dataprepper; +import org.opensearch.dataprepper.core.DataPrepper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.ComponentScan; diff --git a/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperArgs.java b/data-prepper-main/src/main/java/org/opensearch/dataprepper/core/DataPrepperArgs.java similarity index 97% rename from data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperArgs.java rename to data-prepper-main/src/main/java/org/opensearch/dataprepper/core/DataPrepperArgs.java index db08f9959e..14590c3bec 100644 --- a/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperArgs.java +++ b/data-prepper-main/src/main/java/org/opensearch/dataprepper/core/DataPrepperArgs.java @@ -3,10 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper; +package org.opensearch.dataprepper.core; +import org.opensearch.dataprepper.core.parser.config.FileStructurePathProvider; import org.opensearch.dataprepper.logstash.LogstashConfigConverter; -import org.opensearch.dataprepper.parser.config.FileStructurePathProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperArgumentConfiguration.java b/data-prepper-main/src/main/java/org/opensearch/dataprepper/core/DataPrepperArgumentConfiguration.java similarity index 90% rename from data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperArgumentConfiguration.java rename to data-prepper-main/src/main/java/org/opensearch/dataprepper/core/DataPrepperArgumentConfiguration.java index 38c71cdb2b..dd7c252743 100644 --- a/data-prepper-main/src/main/java/org/opensearch/dataprepper/DataPrepperArgumentConfiguration.java +++ b/data-prepper-main/src/main/java/org/opensearch/dataprepper/core/DataPrepperArgumentConfiguration.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper; +package org.opensearch.dataprepper.core; -import org.opensearch.dataprepper.parser.config.DataPrepperAppConfiguration; +import org.opensearch.dataprepper.core.parser.config.DataPrepperAppConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; diff --git a/data-prepper-main/src/test/java/org/opensearch/dataprepper/ContextManagerTest.java b/data-prepper-main/src/test/java/org/opensearch/dataprepper/ContextManagerTest.java index 3f7f1aa88f..e62beaca59 100644 --- a/data-prepper-main/src/test/java/org/opensearch/dataprepper/ContextManagerTest.java +++ b/data-prepper-main/src/test/java/org/opensearch/dataprepper/ContextManagerTest.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.core.DataPrepper; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; diff --git a/data-prepper-main/src/test/java/org/opensearch/dataprepper/DataPrepperArgsTest.java b/data-prepper-main/src/test/java/org/opensearch/dataprepper/core/DataPrepperArgsTest.java similarity index 98% rename from data-prepper-main/src/test/java/org/opensearch/dataprepper/DataPrepperArgsTest.java rename to data-prepper-main/src/test/java/org/opensearch/dataprepper/core/DataPrepperArgsTest.java index 3ec637e6a7..1049f3280e 100644 --- a/data-prepper-main/src/test/java/org/opensearch/dataprepper/DataPrepperArgsTest.java +++ b/data-prepper-main/src/test/java/org/opensearch/dataprepper/core/DataPrepperArgsTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper; +package org.opensearch.dataprepper.core; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/data-prepper-main/src/test/java/org/opensearch/dataprepper/DataPrepperArgumentConfigurationTest.java b/data-prepper-main/src/test/java/org/opensearch/dataprepper/core/DataPrepperArgumentConfigurationTest.java similarity index 98% rename from data-prepper-main/src/test/java/org/opensearch/dataprepper/DataPrepperArgumentConfigurationTest.java rename to data-prepper-main/src/test/java/org/opensearch/dataprepper/core/DataPrepperArgumentConfigurationTest.java index d927964b28..30cd8d6d33 100644 --- a/data-prepper-main/src/test/java/org/opensearch/dataprepper/DataPrepperArgumentConfigurationTest.java +++ b/data-prepper-main/src/test/java/org/opensearch/dataprepper/core/DataPrepperArgumentConfigurationTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper; +package org.opensearch.dataprepper.core; import org.junit.jupiter.api.Test; import org.springframework.core.env.Environment; diff --git a/data-prepper-pipeline-parser/build.gradle b/data-prepper-pipeline-parser/build.gradle index a94f63fc1d..52cbd5307f 100644 --- a/data-prepper-pipeline-parser/build.gradle +++ b/data-prepper-pipeline-parser/build.gradle @@ -12,6 +12,7 @@ group = 'org.opensearch.dataprepper.core' dependencies { implementation project(':data-prepper-api') implementation project(':data-prepper-plugins:blocking-buffer') + implementation project(':data-prepper-plugins:rds-source') implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' implementation 'org.apache.commons:commons-collections4:4.4' diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/LoggingPluginErrorsHandler.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/core/validation/LoggingPluginErrorsHandler.java similarity index 83% rename from data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/LoggingPluginErrorsHandler.java rename to data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/core/validation/LoggingPluginErrorsHandler.java index 879f18823e..c8e04b6586 100644 --- a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/LoggingPluginErrorsHandler.java +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/core/validation/LoggingPluginErrorsHandler.java @@ -1,5 +1,7 @@ -package org.opensearch.dataprepper.validation; +package org.opensearch.dataprepper.core.validation; +import org.opensearch.dataprepper.validation.PluginError; +import org.opensearch.dataprepper.validation.PluginErrorsHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/PluginErrorCollector.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/core/validation/PluginErrorCollector.java similarity index 75% rename from data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/PluginErrorCollector.java rename to data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/core/validation/PluginErrorCollector.java index 62b6654c0b..41b4f47d91 100644 --- a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/PluginErrorCollector.java +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/core/validation/PluginErrorCollector.java @@ -1,6 +1,7 @@ -package org.opensearch.dataprepper.validation; +package org.opensearch.dataprepper.core.validation; import lombok.Getter; +import org.opensearch.dataprepper.validation.PluginError; import javax.inject.Named; import java.util.ArrayList; diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializer.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializer.java index 223821b7e0..d1fd2106a3 100644 --- a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializer.java +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializer.java @@ -34,7 +34,7 @@ public ByteCount deserialize(final JsonParser parser, final DeserializationConte try { return ByteCount.parse(byteString); } catch (final Exception ex) { - throw new IllegalArgumentException(ex); + throw new IllegalArgumentException(ex.getMessage()); } } } diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationDeserializer.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationDeserializer.java index 5005eb9f96..d6ae65e2b0 100644 --- a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationDeserializer.java +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationDeserializer.java @@ -11,9 +11,6 @@ import java.io.IOException; import java.time.Duration; -import java.time.format.DateTimeParseException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * This deserializer is used for configurations that use a {@link Duration} type when deserialized by Jackson @@ -24,54 +21,17 @@ */ public class DataPrepperDurationDeserializer extends StdDeserializer { - private static final String SIMPLE_DURATION_REGEX = "^(0|[1-9]\\d*)(s|ms)$"; - private static final Pattern SIMPLE_DURATION_PATTERN = Pattern.compile(SIMPLE_DURATION_REGEX); - public DataPrepperDurationDeserializer() { this(null); } - protected DataPrepperDurationDeserializer(Class vc) { + protected DataPrepperDurationDeserializer(final Class vc) { super(vc); } @Override - public Duration deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + public Duration deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException { final String durationString = p.getValueAsString(); - Duration duration; - - try { - duration = Duration.parse(durationString); - } catch (final DateTimeParseException e) { - duration = parseSimpleDuration(durationString); - if (duration == null) { - throw new IllegalArgumentException("Durations must use either ISO 8601 notation or simple notations for seconds (60s) or milliseconds (100ms). Whitespace is ignored."); - } - } - - return duration; - } - - private Duration parseSimpleDuration(final String durationString) throws IllegalArgumentException { - final String durationStringNoSpaces = durationString.replaceAll("\\s", ""); - final Matcher matcher = SIMPLE_DURATION_PATTERN.matcher(durationStringNoSpaces); - if (!matcher.find()) { - return null; - } - - final long durationNumber = Long.parseLong(matcher.group(1)); - final String durationUnit = matcher.group(2); - - return getDurationFromUnitAndNumber(durationNumber, durationUnit); - } - - private Duration getDurationFromUnitAndNumber(final long durationNumber, final String durationUnit) { - switch (durationUnit) { - case "s": - return Duration.ofSeconds(durationNumber); - case "ms": - return Duration.ofMillis(durationNumber); - } - return null; + return DataPrepperDurationParser.parse(durationString); } } diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationParser.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationParser.java new file mode 100644 index 0000000000..e758278cf7 --- /dev/null +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationParser.java @@ -0,0 +1,59 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.pipeline.parser; + +import java.time.Duration; +import java.time.format.DateTimeParseException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Parses strings into {@link Duration} supporting the Data Prepper duration format. + * It supports ISO 8601 notation ("PT20.345S", "PT15M", etc.) and simple durations for + * seconds (60s) and milliseconds (100ms). It does not support combining the units for simple durations ("60s 100ms" is not allowed). + * Whitespace is ignored and leading zeroes are not allowed. + * @since 2.10 + */ +public class DataPrepperDurationParser { + private static final String SIMPLE_DURATION_REGEX = "^(0|[1-9]\\d*)(s|ms)$"; + private static final Pattern SIMPLE_DURATION_PATTERN = Pattern.compile(SIMPLE_DURATION_REGEX); + + public static Duration parse(final String durationString) { + try { + return Duration.parse(durationString); + } catch (final DateTimeParseException e) { + final Duration duration = parseSimpleDuration(durationString); + if (duration == null) { + throw new IllegalArgumentException("Durations must use either ISO 8601 notation or simple notations for seconds (60s) or milliseconds (100ms). Whitespace is ignored."); + } + return duration; + } + } + + private static Duration parseSimpleDuration(final String durationString) throws IllegalArgumentException { + final String durationStringNoSpaces = durationString.replaceAll("\\s", ""); + final Matcher matcher = SIMPLE_DURATION_PATTERN.matcher(durationStringNoSpaces); + if (!matcher.find()) { + return null; + } + + final long durationNumber = Long.parseLong(matcher.group(1)); + final String durationUnit = matcher.group(2); + + return getDurationFromUnitAndNumber(durationNumber, durationUnit); + } + + private static Duration getDurationFromUnitAndNumber(final long durationNumber, final String durationUnit) { + switch (durationUnit) { + case "s": + return Duration.ofSeconds(durationNumber); + case "ms": + return Duration.ofMillis(durationNumber); + } + return null; + } + +} diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/EnumDeserializer.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/EnumDeserializer.java new file mode 100644 index 0000000000..e95f10b962 --- /dev/null +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/EnumDeserializer.java @@ -0,0 +1,111 @@ +package org.opensearch.dataprepper.pipeline.parser; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.ContextualDeserializer; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + + +/** + * This deserializer is used for any Enum classes when converting the pipeline configuration file into the plugin model classes + * @since 2.11 + */ +public class EnumDeserializer extends JsonDeserializer> implements ContextualDeserializer { + + static final String INVALID_ENUM_VALUE_ERROR_FORMAT = "Invalid value \"%s\". Valid options include %s."; + + private Class enumClass; + + public EnumDeserializer() {} + + public EnumDeserializer(final Class enumClass) { + if (!enumClass.isEnum()) { + throw new IllegalArgumentException("The provided class is not an enum: " + enumClass.getName()); + } + + this.enumClass = enumClass; + } + @Override + public Enum deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException { + final JsonNode node = p.getCodec().readTree(p); + final String enumValue = node.asText(); + + final Optional jsonCreator = findJsonCreatorMethod(); + + try { + jsonCreator.ifPresent(method -> method.setAccessible(true)); + + for (Object enumConstant : enumClass.getEnumConstants()) { + try { + if (jsonCreator.isPresent() && enumConstant.equals(jsonCreator.get().invoke(null, enumValue))) { + return (Enum) enumConstant; + } else if (jsonCreator.isEmpty() && enumConstant.toString().toLowerCase().equals(enumValue)) { + return (Enum) enumConstant; + } + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } + } finally { + jsonCreator.ifPresent(method -> method.setAccessible(false)); + } + + + + final Optional jsonValueMethod = findJsonValueMethodForClass(); + final List listOfEnums = jsonValueMethod.map(method -> Arrays.stream(enumClass.getEnumConstants()) + .map(valueEnum -> { + try { + return method.invoke(valueEnum); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + }) + .collect(Collectors.toList())).orElseGet(() -> Arrays.stream(enumClass.getEnumConstants()) + .map(valueEnum -> valueEnum.toString().toLowerCase()) + .collect(Collectors.toList())); + + throw new IllegalArgumentException(String.format(INVALID_ENUM_VALUE_ERROR_FORMAT, enumValue, listOfEnums)); + } + + @Override + public JsonDeserializer createContextual(final DeserializationContext ctxt, final BeanProperty property) { + final JavaType javaType = property.getType(); + final Class rawClass = javaType.getRawClass(); + + return new EnumDeserializer(rawClass); + } + + private Optional findJsonValueMethodForClass() { + for (final Method method : enumClass.getDeclaredMethods()) { + if (method.isAnnotationPresent(JsonValue.class)) { + return Optional.of(method); + } + } + + return Optional.empty(); + } + + private Optional findJsonCreatorMethod() { + for (final Method method : enumClass.getDeclaredMethods()) { + if (method.isAnnotationPresent(JsonCreator.class)) { + return Optional.of(method); + } + } + + return Optional.empty(); + } +} diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformer.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformer.java index ac7a09c4e6..c782515ef3 100644 --- a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformer.java +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformer.java @@ -17,6 +17,8 @@ import com.jayway.jsonpath.spi.json.JacksonJsonNodeJsonProvider; import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; import static java.lang.String.format; +import static org.opensearch.dataprepper.plugins.source.rds.RdsService.MAX_SOURCE_IDENTIFIER_LENGTH; + import org.opensearch.dataprepper.model.configuration.PipelineModel; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import org.opensearch.dataprepper.model.configuration.SinkModel; @@ -24,6 +26,7 @@ import org.opensearch.dataprepper.pipeline.parser.rule.RuleEvaluatorResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.opensearch.dataprepper.plugins.source.rds.utils.IdentifierShortener; import software.amazon.awssdk.arns.Arn; import javax.xml.transform.TransformerException; @@ -77,6 +80,7 @@ public class DynamicConfigTransformer implements PipelineConfigurationTransforme private static final String SINK_SUBPIPELINE_PLUGIN_NAME = "pipeline"; private static final String SUBPIPELINE_PATH = "$.source.pipeline"; + private static final String S3_BUFFER_PREFIX = "/buffer"; Configuration parseConfigWithJsonNode = Configuration.builder() .jsonProvider(new JacksonJsonNodeJsonProvider()) @@ -402,15 +406,28 @@ private boolean isJsonPath(String parameter) { } /** - * Specific to DocDB depth field. - * @param s3Prefix - * @return + * Calculate s3 folder scan depth for DocDB source pipeline + * @param s3Prefix: s3 prefix defined in the source configuration + * @return s3 folder scan depth */ public String calculateDepth(String s3Prefix) { + return Integer.toString(getDepth(s3Prefix, 4)); + } + + /** + * Calculate s3 folder scan depth for RDS source pipeline + * @param s3Prefix: s3 prefix defined in the source configuration + * @return s3 folder scan depth + */ + public String calculateDepthForRdsSource(String s3Prefix) { + return Integer.toString(getDepth(s3Prefix, 3)); + } + + private int getDepth(String s3Prefix, int baseDepth) { if(s3Prefix == null){ - return Integer.toString(4); + return baseDepth; } - return Integer.toString(s3Prefix.split("/").length + 4); + return s3Prefix.split("/").length + baseDepth; } public String getSourceCoordinationIdentifierEnvVariable(String s3Prefix){ @@ -421,6 +438,25 @@ public String getSourceCoordinationIdentifierEnvVariable(String s3Prefix){ return s3Prefix+"/"+envSourceCoordinationIdentifier; } + /** + * Get the include_prefix in s3 scan source. This is a function specific to RDS source. + * @param s3Prefix: s3 prefix defined in the source configuration + * @return the actual include_prefix + */ + public String getIncludePrefixForRdsSource(String s3Prefix) { + final String envSourceCoordinationIdentifier = System.getenv(SOURCE_COORDINATION_IDENTIFIER_ENVIRONMENT_VARIABLE); + final String shortenedSourceIdentifier = envSourceCoordinationIdentifier != null ? + IdentifierShortener.shortenIdentifier(envSourceCoordinationIdentifier, MAX_SOURCE_IDENTIFIER_LENGTH) : null; + if (s3Prefix == null && envSourceCoordinationIdentifier == null) { + return S3_BUFFER_PREFIX; + } else if (s3Prefix == null) { + return shortenedSourceIdentifier + S3_BUFFER_PREFIX; + } else if (envSourceCoordinationIdentifier == null) { + return s3Prefix + S3_BUFFER_PREFIX; + } + return s3Prefix + "/" + shortenedSourceIdentifier + S3_BUFFER_PREFIX; + } + public String getAccountIdFromRole(final String roleArn) { return Arn.fromString(roleArn).accountId().orElse(null); } diff --git a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/PluginError.java b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/PluginError.java index 50a130c4f4..01634a6e7c 100644 --- a/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/PluginError.java +++ b/data-prepper-pipeline-parser/src/main/java/org/opensearch/dataprepper/validation/PluginError.java @@ -7,12 +7,13 @@ @Getter @Builder public class PluginError { - static final String PIPELINE_DELIMITER = ":"; + static final String PIPELINE_DELIMITER = "."; + static final String PATH_TO_CAUSE_DELIMITER = ":"; static final String CAUSED_BY_DELIMITER = " caused by: "; private final String pipelineName; private final String componentType; - @NonNull private final String pluginName; + @NonNull private final Exception exception; @@ -26,8 +27,11 @@ public String getErrorMessage() { message.append(componentType); message.append(PIPELINE_DELIMITER); } - message.append(pluginName); - message.append(PIPELINE_DELIMITER); + + if (pluginName != null) { + message.append(pluginName); + message.append(PATH_TO_CAUSE_DELIMITER); + } message.append(getFlattenedExceptionMessage(CAUSED_BY_DELIMITER)); return message.toString(); } @@ -37,8 +41,10 @@ private String getFlattenedExceptionMessage(final String delimiter) { Throwable throwable = exception; while (throwable != null) { - message.append(delimiter); - message.append(throwable.getMessage()); + if (throwable.getMessage() != null) { + message.append(delimiter); + message.append(throwable.getMessage()); + } throwable = throwable.getCause(); } diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/LoggingPluginErrorsHandlerTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/core/validation/LoggingPluginErrorsHandlerTest.java similarity index 92% rename from data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/LoggingPluginErrorsHandlerTest.java rename to data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/core/validation/LoggingPluginErrorsHandlerTest.java index f4b8fbbec5..013a205a8f 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/LoggingPluginErrorsHandlerTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/core/validation/LoggingPluginErrorsHandlerTest.java @@ -1,7 +1,8 @@ -package org.opensearch.dataprepper.validation; +package org.opensearch.dataprepper.core.validation; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; +import org.opensearch.dataprepper.validation.PluginError; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/PluginErrorCollectorTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/core/validation/PluginErrorCollectorTest.java similarity index 85% rename from data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/PluginErrorCollectorTest.java rename to data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/core/validation/PluginErrorCollectorTest.java index d0b5fbd8b2..2271dfdff2 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/PluginErrorCollectorTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/core/validation/PluginErrorCollectorTest.java @@ -1,6 +1,7 @@ -package org.opensearch.dataprepper.validation; +package org.opensearch.dataprepper.core.validation; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.validation.PluginError; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializerTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializerTest.java index 21f0b000f3..6d4575bf4e 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializerTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/ByteCountDeserializerTest.java @@ -13,6 +13,7 @@ import org.junit.jupiter.params.provider.ValueSource; import org.opensearch.dataprepper.model.types.ByteCount; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; @@ -31,9 +32,28 @@ void setUp() { } @ParameterizedTest - @ValueSource(strings = {"1", "1b 2b", "1vb", "bad"}) - void convert_with_invalid_values_throws(final String invalidByteString) { - assertThrows(IllegalArgumentException.class, () -> objectMapper.convertValue(invalidByteString, ByteCount.class)); + @ValueSource(strings = {"1", "10"}) + void convert_with_no_byte_unit_throws_expected_exception(final String invalidByteString) { + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> objectMapper.convertValue(invalidByteString, ByteCount.class)); + assertThat(exception.getMessage(), containsString("Byte counts must have a unit. Valid byte units include: [b, kb, mb, gb]")); + } + + @ParameterizedTest + @ValueSource(strings = {"10 2b", "bad"}) + void convert_with_non_parseable_values_throws(final String invalidByteString) { + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> objectMapper.convertValue(invalidByteString, ByteCount.class)); + assertThat(exception.getMessage(), containsString("Unable to parse bytes")); + } + + @ParameterizedTest + @CsvSource({ + "10f, f", + "1vb, vb", + "3g, g" + }) + void convert_with_invalid_byte_units_throws(final String invalidByteString, final String invalidUnit) { + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> objectMapper.convertValue(invalidByteString, ByteCount.class)); + assertThat(exception.getMessage(), containsString("Invalid byte unit: '" + invalidUnit + "'. Valid byte units include: [b, kb, mb, gb]")); } @ParameterizedTest diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationParserTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationParserTest.java new file mode 100644 index 0000000000..4913e9c545 --- /dev/null +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/DataPrepperDurationParserTest.java @@ -0,0 +1,56 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.pipeline.parser; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import java.time.Duration; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class DataPrepperDurationParserTest { + + @ParameterizedTest + @ValueSource(strings = {"6s1s", "60ms 100s", "20.345s", "-1s", "06s", "100m", "100sm", "100"}) + void invalidDurationStringsThrowIllegalArgumentException(final String durationString) { + assertThrows(IllegalArgumentException.class, () -> DataPrepperDurationParser.parse(durationString)); + } + + @Test + void ISO_8601_duration_string_returns_correct_duration() { + final String durationString = "PT15M"; + final Duration result = DataPrepperDurationParser.parse(durationString); + assertThat(result, equalTo(Duration.ofMinutes(15))); + } + + @ParameterizedTest + @ValueSource(strings = {"0s", "0ms"}) + void simple_duration_strings_of_0_return_correct_duration(final String durationString) { + final Duration result = DataPrepperDurationParser.parse(durationString); + + assertThat(result, equalTo(Duration.ofSeconds(0))); + } + + @ParameterizedTest + @ValueSource(strings = {"60s", "60000ms", "60 s", "60000 ms", " 60 s "}) + void simple_duration_strings_of_60_seconds_return_correct_duration(final String durationString) { + final Duration result = DataPrepperDurationParser.parse(durationString); + + assertThat(result, equalTo(Duration.ofSeconds(60))); + } + + @ParameterizedTest + @ValueSource(strings = {"5s", "5000ms", "5 s", "5000 ms", " 5 s "}) + void simple_duration_strings_of_5_seconds_return_correct_duration(final String durationString) { + final Duration result = DataPrepperDurationParser.parse(durationString); + + assertThat(result, equalTo(Duration.ofSeconds(5))); + } +} \ No newline at end of file diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/EnumDeserializerTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/EnumDeserializerTest.java new file mode 100644 index 0000000000..990fd60e7d --- /dev/null +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/EnumDeserializerTest.java @@ -0,0 +1,174 @@ +package org.opensearch.dataprepper.pipeline.parser; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.TextNode; +import org.hamcrest.Matchers; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; +import org.opensearch.dataprepper.model.event.HandleFailedEventsOption; + +import java.io.IOException; +import java.time.Duration; +import java.util.Arrays; +import java.util.Map; +import java.util.UUID; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class EnumDeserializerTest { + + private ObjectMapper objectMapper; + + @BeforeEach + void setup() { + objectMapper = mock(ObjectMapper.class); + } + + private EnumDeserializer createObjectUnderTest(final Class enumClass) { + return new EnumDeserializer(enumClass); + } + + @Test + void non_enum_class_throws_IllegalArgumentException() { + assertThrows(IllegalArgumentException.class, () -> new EnumDeserializer(Duration.class)); + } + + @ParameterizedTest + @EnumSource(TestEnum.class) + void enum_class_with_json_creator_annotation_returns_expected_enum_constant(final TestEnum testEnumOption) throws IOException { + final EnumDeserializer objectUnderTest = createObjectUnderTest(TestEnum.class); + final JsonParser jsonParser = mock(JsonParser.class); + final DeserializationContext deserializationContext = mock(DeserializationContext.class); + when(jsonParser.getCodec()).thenReturn(objectMapper); + + when(objectMapper.readTree(jsonParser)).thenReturn(new TextNode(testEnumOption.toString())); + + Enum result = objectUnderTest.deserialize(jsonParser, deserializationContext); + + assertThat(result, equalTo(testEnumOption)); + } + + @ParameterizedTest + @EnumSource(TestEnumWithoutJsonCreator.class) + void enum_class_without_json_creator_annotation_returns_expected_enum_constant(final TestEnumWithoutJsonCreator enumWithoutJsonCreator) throws IOException { + final EnumDeserializer objectUnderTest = createObjectUnderTest(TestEnumWithoutJsonCreator.class); + final JsonParser jsonParser = mock(JsonParser.class); + final DeserializationContext deserializationContext = mock(DeserializationContext.class); + when(jsonParser.getCodec()).thenReturn(objectMapper); + + when(objectMapper.readTree(jsonParser)).thenReturn(new TextNode(enumWithoutJsonCreator.toString())); + + Enum result = objectUnderTest.deserialize(jsonParser, deserializationContext); + + assertThat(result, equalTo(enumWithoutJsonCreator)); + } + + @Test + void enum_class_with_invalid_value_and_jsonValue_annotation_throws_IllegalArgumentException() throws IOException { + final EnumDeserializer objectUnderTest = createObjectUnderTest(TestEnum.class); + final JsonParser jsonParser = mock(JsonParser.class); + final DeserializationContext deserializationContext = mock(DeserializationContext.class); + when(jsonParser.getCodec()).thenReturn(objectMapper); + + final String invalidValue = UUID.randomUUID().toString(); + when(objectMapper.readTree(jsonParser)).thenReturn(new TextNode(invalidValue)); + + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> + objectUnderTest.deserialize(jsonParser, deserializationContext)); + + assertThat(exception, notNullValue()); + final String expectedErrorMessage = "Invalid value \"" + invalidValue + "\". Valid options include"; + assertThat(exception.getMessage(), Matchers.startsWith(expectedErrorMessage)); + assertThat(exception.getMessage(), containsString("[test_display_one, test_display_two, test_display_three]")); + } + + @Test + void enum_class_with_invalid_value_and_no_jsonValue_annotation_throws_IllegalArgumentException() throws IOException { + final EnumDeserializer objectUnderTest = createObjectUnderTest(TestEnumWithoutJsonCreator.class); + final JsonParser jsonParser = mock(JsonParser.class); + final DeserializationContext deserializationContext = mock(DeserializationContext.class); + when(jsonParser.getCodec()).thenReturn(objectMapper); + + final String invalidValue = UUID.randomUUID().toString(); + when(objectMapper.readTree(jsonParser)).thenReturn(new TextNode(invalidValue)); + + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> + objectUnderTest.deserialize(jsonParser, deserializationContext)); + + assertThat(exception, notNullValue()); + final String expectedErrorMessage = "Invalid value \"" + invalidValue + "\". Valid options include"; + assertThat(exception.getMessage(), Matchers.startsWith(expectedErrorMessage)); + + } + + @Test + void create_contextual_returns_expected_enum_deserializer() { + final DeserializationContext context = mock(DeserializationContext.class); + final BeanProperty property = mock(BeanProperty.class); + + final ObjectMapper mapper = new ObjectMapper(); + final JavaType javaType = mapper.constructType(HandleFailedEventsOption.class); + when(property.getType()).thenReturn(javaType); + + final EnumDeserializer objectUnderTest = new EnumDeserializer(); + JsonDeserializer result = objectUnderTest.createContextual(context, property); + + assertThat(result, instanceOf(EnumDeserializer.class)); + } + + private enum TestEnum { + TEST_ONE("test_display_one"), + TEST_TWO("test_display_two"), + TEST_THREE("test_display_three"); + private static final Map NAMES_MAP = Arrays.stream(TestEnum.values()) + .collect(Collectors.toMap(TestEnum::toString, Function.identity())); + private final String name; + TestEnum(final String name) { + this.name = name; + } + + @JsonValue + public String toString() { + return this.name; + } + @JsonCreator + static TestEnum fromOptionValue(final String option) { + return NAMES_MAP.get(option); + } + } + + private enum TestEnumWithoutJsonCreator { + TEST("test"); + private static final Map NAMES_MAP = Arrays.stream(TestEnumWithoutJsonCreator.values()) + .collect(Collectors.toMap(TestEnumWithoutJsonCreator::toString, Function.identity())); + private final String name; + TestEnumWithoutJsonCreator(final String name) { + this.name = name; + } + public String toString() { + return this.name; + } + + static TestEnumWithoutJsonCreator fromOptionValue(final String option) { + return NAMES_MAP.get(option); + } + } +} diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/PipelinesDataflowModelParserTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/PipelinesDataflowModelParserTest.java index e7e9fbe310..5c3e15aee0 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/PipelinesDataflowModelParserTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/PipelinesDataflowModelParserTest.java @@ -5,17 +5,11 @@ package org.opensearch.dataprepper.pipeline.parser; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; -import static org.mockito.Mockito.when; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.model.configuration.DataPrepperVersion; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; @@ -30,6 +24,13 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.when; + @ExtendWith(MockitoExtension.class) class PipelinesDataflowModelParserTest { diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/TestConfigurationProvider.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/TestConfigurationProvider.java index 8abdd1afb8..b92590cf02 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/TestConfigurationProvider.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/TestConfigurationProvider.java @@ -5,8 +5,6 @@ package org.opensearch.dataprepper.pipeline.parser; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import org.opensearch.dataprepper.model.configuration.PluginModel; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.configuration.SinkModel; @@ -19,6 +17,9 @@ import java.util.Map; import java.util.Set; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public class TestConfigurationProvider { public static final String TEST_PIPELINE_NAME = "test-pipeline-1"; public static final String TEST_PLUGIN_NAME_1 = "test-plugin-1"; diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/model/PipelineConfigurationTests.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/model/PipelineConfigurationTests.java index 2a8105221e..8baaad331e 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/model/PipelineConfigurationTests.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/model/PipelineConfigurationTests.java @@ -8,11 +8,11 @@ import org.hamcrest.CoreMatchers; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.pipeline.parser.TestConfigurationProvider; import org.opensearch.dataprepper.model.configuration.PipelineModel; import org.opensearch.dataprepper.model.configuration.PluginModel; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.configuration.SinkModel; +import org.opensearch.dataprepper.pipeline.parser.TestConfigurationProvider; import org.opensearch.dataprepper.plugins.buffer.blockingbuffer.BlockingBuffer; import java.util.ArrayList; diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorResultTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorResultTest.java index 11064546f5..104beeee6e 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorResultTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorResultTest.java @@ -4,12 +4,13 @@ */ package org.opensearch.dataprepper.pipeline.parser.rule; +import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.pipeline.parser.transformer.PipelineTemplateModel; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.Test; -import org.opensearch.dataprepper.pipeline.parser.transformer.PipelineTemplateModel; class RuleEvaluatorResultTest { diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorTest.java index a7bf0f5e6c..c2b7cf96cb 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleEvaluatorTest.java @@ -4,13 +4,7 @@ */ package org.opensearch.dataprepper.pipeline.parser.rule; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import org.opensearch.dataprepper.model.configuration.PipelineExtensions; import org.opensearch.dataprepper.model.configuration.PipelineModel; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; @@ -28,6 +22,13 @@ import java.util.List; import java.util.Map; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + class RuleEvaluatorTest { @Test diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleTransformerModelTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleTransformerModelTest.java index 02a6370229..bb974ce88b 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleTransformerModelTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/rule/RuleTransformerModelTest.java @@ -6,12 +6,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; import java.util.Arrays; import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + class RuleTransformerModelTest { private final ObjectMapper objectMapper = new ObjectMapper(); diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformerTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformerTest.java index a1f417054c..775491b966 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformerTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/DynamicConfigTransformerTest.java @@ -7,12 +7,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.Test; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import org.opensearch.dataprepper.model.configuration.PipelinesDataFlowModel; import org.opensearch.dataprepper.pipeline.parser.PipelineConfigurationFileReader; import org.opensearch.dataprepper.pipeline.parser.PipelineConfigurationReader; @@ -31,6 +27,11 @@ import java.util.List; import java.util.Map; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + class DynamicConfigTransformerTest { private final ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory() diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/PipelineTemplateModelTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/PipelineTemplateModelTest.java index 3a0da61231..aae1c4bf54 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/PipelineTemplateModelTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/PipelineTemplateModelTest.java @@ -5,15 +5,16 @@ package org.opensearch.dataprepper.pipeline.parser.transformer; import com.fasterxml.jackson.databind.ObjectMapper; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + public class PipelineTemplateModelTest { private PipelineTemplateModel pipelineTemplateModel; diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/TransformersFactoryTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/TransformersFactoryTest.java index ff5b6f21c6..9cabe6e5e9 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/TransformersFactoryTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/pipeline/parser/transformer/TransformersFactoryTest.java @@ -1,10 +1,5 @@ package org.opensearch.dataprepper.pipeline.parser.transformer; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.opensearch.dataprepper.pipeline.parser.rule.RuleStream; @@ -12,6 +7,12 @@ import java.io.InputStream; import java.util.Collection; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + class TransformersFactoryTest { private TransformersFactory transformersFactory; diff --git a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/PluginErrorTest.java b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/PluginErrorTest.java index c02dde376c..325c9d20a6 100644 --- a/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/PluginErrorTest.java +++ b/data-prepper-pipeline-parser/src/test/java/org/opensearch/dataprepper/validation/PluginErrorTest.java @@ -25,7 +25,7 @@ void testGetErrorMessageWithPipelineName() { .exception(exception) .build(); assertThat(pluginError.getErrorMessage(), equalTo( - "test-pipeline:test-plugin-type:test-plugin: caused by: test error message")); + "test-pipeline.test-plugin-type.test-plugin: caused by: test error message")); } @Test @@ -38,7 +38,7 @@ void testGetErrorMessageWithoutPipelineName() { .exception(exception) .build(); assertThat(pluginError.getErrorMessage(), equalTo( - "test-plugin-type:test-plugin: caused by: test error message")); + "test-plugin-type.test-plugin: caused by: test error message")); } @Test diff --git a/data-prepper-plugin-framework/build.gradle b/data-prepper-plugin-framework/build.gradle index 14f03fe15d..8eff39b1dc 100644 --- a/data-prepper-plugin-framework/build.gradle +++ b/data-prepper-plugin-framework/build.gradle @@ -24,4 +24,5 @@ dependencies { } implementation libs.reflections.core implementation 'com.fasterxml.jackson.core:jackson-databind' + implementation 'org.apache.commons:commons-text:1.10.0' } \ No newline at end of file diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ClasspathPluginProvider.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ClasspathPluginProvider.java index f5217ef8f5..df29915cd1 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ClasspathPluginProvider.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ClasspathPluginProvider.java @@ -15,8 +15,12 @@ import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; +import java.util.stream.Stream; +import static org.opensearch.dataprepper.model.annotations.DataPrepperPlugin.DEFAULT_ALTERNATE_NAME; import static org.opensearch.dataprepper.model.annotations.DataPrepperPlugin.DEFAULT_DEPRECATED_NAME; /** @@ -57,6 +61,20 @@ public Optional> findPluginClass(final Class pluginTyp return Optional.ofNullable((Class) supportedTypesMap.get(pluginType)); } + @Override + public Set> findPluginClasses(Class pluginType) { + if (nameToSupportedTypeToPluginType == null) { + nameToSupportedTypeToPluginType = scanForPlugins(); + } + + return nameToSupportedTypeToPluginType.values().stream() + .flatMap(supportedTypeToPluginType -> + supportedTypeToPluginType.entrySet().stream() + .filter(entry -> pluginType.equals(entry.getKey())) + .flatMap(entry -> Stream.of((Class) entry.getValue()))) + .collect(Collectors.toSet()); + } + private Map, Class>> scanForPlugins() { final Set> dataPrepperPluginClasses = reflections.getTypesAnnotatedWith(DataPrepperPlugin.class); @@ -69,30 +87,34 @@ private Map, Class>> scanForPlugins() { final Map, Class>> pluginsMap = new HashMap<>(dataPrepperPluginClasses.size()); for (final Class concretePluginClass : dataPrepperPluginClasses) { - final DataPrepperPlugin dataPrepperPluginAnnotation = concretePluginClass.getAnnotation(DataPrepperPlugin.class); - final String pluginName = dataPrepperPluginAnnotation.name(); - final Class supportedType = dataPrepperPluginAnnotation.pluginType(); - - final Map, Class> supportTypeToPluginTypeMap = - pluginsMap.computeIfAbsent(pluginName, k -> new HashMap<>()); - supportTypeToPluginTypeMap.put(supportedType, concretePluginClass); - - addOptionalDeprecatedPluginName(pluginsMap, concretePluginClass); + // plugin name + addPossiblePluginName(pluginsMap, concretePluginClass, DataPrepperPlugin::name, name -> true); + // deprecated plugin name + addPossiblePluginName(pluginsMap, concretePluginClass, DataPrepperPlugin::deprecatedName, + deprecatedPluginName -> !deprecatedPluginName.equals(DEFAULT_DEPRECATED_NAME)); + // alternate plugin names + for (final String alternateName: concretePluginClass.getAnnotation(DataPrepperPlugin.class).alternateNames()) { + addPossiblePluginName(pluginsMap, concretePluginClass, DataPrepperPlugin -> alternateName, + alternatePluginName -> !alternatePluginName.equals(DEFAULT_ALTERNATE_NAME)); + } } return pluginsMap; } - private void addOptionalDeprecatedPluginName( + private void addPossiblePluginName( final Map, Class>> pluginsMap, - final Class concretePluginClass) { + final Class concretePluginClass, + final Function possiblePluginNameFunction, + final Predicate possiblePluginNamePredicate + ) { final DataPrepperPlugin dataPrepperPluginAnnotation = concretePluginClass.getAnnotation(DataPrepperPlugin.class); - final String deprecatedPluginName = dataPrepperPluginAnnotation.deprecatedName(); + final String possiblePluginName = possiblePluginNameFunction.apply(dataPrepperPluginAnnotation); final Class supportedType = dataPrepperPluginAnnotation.pluginType(); - if (!deprecatedPluginName.equals(DEFAULT_DEPRECATED_NAME)) { + if (possiblePluginNamePredicate.test(possiblePluginName)) { final Map, Class> supportTypeToPluginTypeMap = - pluginsMap.computeIfAbsent(deprecatedPluginName, k -> new HashMap<>()); + pluginsMap.computeIfAbsent(possiblePluginName, k -> new HashMap<>()); supportTypeToPluginTypeMap.put(supportedType, concretePluginClass); } } diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/DefaultPluginFactory.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/DefaultPluginFactory.java index 1565ce396e..81fd1c2b5b 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/DefaultPluginFactory.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/DefaultPluginFactory.java @@ -13,6 +13,7 @@ import org.opensearch.dataprepper.model.sink.SinkContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.BeanFactory; import org.springframework.context.annotation.DependsOn; import javax.inject.Inject; @@ -115,13 +116,16 @@ private ComponentPluginArgumentsContext getConstructionContext(final PluginS final PluginConfigObservable pluginConfigObservable = pluginConfigurationObservableFactory .createDefaultPluginConfigObservable(pluginConfigurationConverter, pluginConfigurationType, pluginSetting); + Class[] markersToScan = pluginAnnotation.packagesToScan(); + BeanFactory beanFactory = pluginBeanFactoryProvider.createPluginSpecificContext(markersToScan, configuration); + return new ComponentPluginArgumentsContext.Builder() .withPluginSetting(pluginSetting) .withPipelineDescription(pluginSetting) .withPluginConfiguration(configuration) .withPluginFactory(this) .withSinkContext(sinkContext) - .withBeanFactory(pluginBeanFactoryProvider.get()) + .withBeanFactory(beanFactory) .withPluginConfigurationObservable(pluginConfigObservable) .withTypeArgumentSuppliers(applicationContextToTypedSuppliers.getArgumentsSuppliers()) .build(); diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ExtensionLoader.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ExtensionLoader.java index bd895f6e51..0f12bdb449 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ExtensionLoader.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ExtensionLoader.java @@ -11,7 +11,7 @@ import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import org.opensearch.dataprepper.model.plugin.InvalidPluginDefinitionException; import org.opensearch.dataprepper.validation.PluginError; -import org.opensearch.dataprepper.validation.PluginErrorCollector; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; import org.opensearch.dataprepper.validation.PluginErrorsHandler; import javax.inject.Inject; diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ObjectMapperConfiguration.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ObjectMapperConfiguration.java index ca2cea4ee8..0ec428397b 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ObjectMapperConfiguration.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ObjectMapperConfiguration.java @@ -13,6 +13,7 @@ import org.opensearch.dataprepper.model.types.ByteCount; import org.opensearch.dataprepper.pipeline.parser.ByteCountDeserializer; import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; +import org.opensearch.dataprepper.pipeline.parser.EnumDeserializer; import org.opensearch.dataprepper.pipeline.parser.EventKeyDeserializer; import org.springframework.context.annotation.Bean; @@ -33,6 +34,7 @@ public class ObjectMapperConfiguration { ObjectMapper extensionPluginConfigObjectMapper() { final SimpleModule simpleModule = new SimpleModule(); simpleModule.addDeserializer(Duration.class, new DataPrepperDurationDeserializer()); + simpleModule.addDeserializer(Enum.class, new EnumDeserializer()); simpleModule.addDeserializer(ByteCount.class, new ByteCountDeserializer()); return new ObjectMapper() @@ -47,6 +49,7 @@ ObjectMapper pluginConfigObjectMapper( final SimpleModule simpleModule = new SimpleModule(); simpleModule.addDeserializer(Duration.class, new DataPrepperDurationDeserializer()); simpleModule.addDeserializer(ByteCount.class, new ByteCountDeserializer()); + simpleModule.addDeserializer(Enum.class, new EnumDeserializer()); simpleModule.addDeserializer(EventKey.class, new EventKeyDeserializer(eventKeyFactory)); TRANSLATE_VALUE_SUPPORTED_JAVA_TYPES.stream().forEach(clazz -> simpleModule.addDeserializer( clazz, new DataPrepperScalarTypeDeserializer<>(variableExpander, clazz))); diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProvider.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProvider.java index 66a42eb36a..76762f8d8e 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProvider.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProvider.java @@ -5,13 +5,16 @@ package org.opensearch.dataprepper.plugin; +import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.GenericApplicationContext; import javax.inject.Inject; import javax.inject.Named; -import javax.inject.Provider; +import java.util.Arrays; import java.util.Objects; /** @@ -25,7 +28,7 @@ *

publicContext is the root {@link ApplicationContext}

*/ @Named -class PluginBeanFactoryProvider implements Provider { +class PluginBeanFactoryProvider { private final GenericApplicationContext sharedPluginApplicationContext; private final GenericApplicationContext coreApplicationContext; @@ -57,8 +60,21 @@ GenericApplicationContext getCoreApplicationContext() { * instead, a new isolated {@link ApplicationContext} should be created. * @return BeanFactory A BeanFactory that inherits from {@link PluginBeanFactoryProvider#sharedPluginApplicationContext} */ - public BeanFactory get() { - final GenericApplicationContext isolatedPluginApplicationContext = new GenericApplicationContext(sharedPluginApplicationContext); - return isolatedPluginApplicationContext.getBeanFactory(); + public BeanFactory createPluginSpecificContext(Class[] markersToScan, Object configuration) { + AnnotationConfigApplicationContext isolatedPluginApplicationContext = new AnnotationConfigApplicationContext(); + DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) isolatedPluginApplicationContext.getBeanFactory(); + if(markersToScan !=null && markersToScan.length>0) { + if(configuration !=null && !(configuration instanceof PluginSetting)) { + beanFactory.registerSingleton(configuration.getClass().getName(), configuration); + } + // If packages to scan is provided in this plugin annotation, which indicates + // that this plugin is interested in using Dependency Injection isolated for its module + Arrays.stream(markersToScan) + .map(Class::getPackageName) + .forEach(isolatedPluginApplicationContext::scan); + isolatedPluginApplicationContext.refresh(); + } + isolatedPluginApplicationContext.setParent(sharedPluginApplicationContext); + return beanFactory; } } diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverter.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverter.java index 27822e06e4..5af6d3dea9 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverter.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverter.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.validation.ConstraintViolation; import jakarta.validation.Validator; +import jakarta.validation.constraints.AssertTrue; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; @@ -32,11 +33,15 @@ class PluginConfigurationConverter { private final ObjectMapper objectMapper; private final Validator validator; + private final PluginConfigurationErrorHandler pluginConfigurationErrorHandler; + PluginConfigurationConverter(final Validator validator, @Named("pluginConfigObjectMapper") - final ObjectMapper objectMapper) { + final ObjectMapper objectMapper, + final PluginConfigurationErrorHandler pluginConfigurationErrorHandler) { this.objectMapper = objectMapper; this.validator = validator; + this.pluginConfigurationErrorHandler = pluginConfigurationErrorHandler; } /** @@ -65,7 +70,7 @@ public Object convert(final Class pluginConfigurationType, final PluginSettin if (!constraintViolations.isEmpty()) { final String violationsString = constraintViolations.stream() - .map(v -> v.getPropertyPath().toString() + " " + v.getMessage()) + .map(this::constructConstrainViolationMessage) .collect(Collectors.joining(". ")); final String exceptionMessage = String.format("Plugin %s in pipeline %s is configured incorrectly: %s", @@ -80,6 +85,20 @@ private Object convertSettings(final Class pluginConfigurationType, final Plu Map settingsMap = pluginSetting.getSettings(); if (settingsMap == null) settingsMap = Collections.emptyMap(); - return objectMapper.convertValue(settingsMap, pluginConfigurationType); + + try { + return objectMapper.convertValue(settingsMap, pluginConfigurationType); + } catch (final Exception e) { + throw pluginConfigurationErrorHandler.handleException(pluginSetting, e); + } + } + + private String constructConstrainViolationMessage(final ConstraintViolation constraintViolation) { + if (constraintViolation.getConstraintDescriptor().getAnnotation().annotationType().equals(AssertTrue.class)) { + return constraintViolation.getMessage(); + } + + return constraintViolation.getPropertyPath().toString() + " " + constraintViolation.getMessage(); } + } diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginConfigurationErrorHandler.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginConfigurationErrorHandler.java new file mode 100644 index 0000000000..9ae5f2579c --- /dev/null +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginConfigurationErrorHandler.java @@ -0,0 +1,90 @@ +package org.opensearch.dataprepper.plugin; + +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; +import org.apache.commons.text.similarity.LevenshteinDistance; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; + +import javax.inject.Inject; +import javax.inject.Named; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +@Named +public class PluginConfigurationErrorHandler { + + static final String UNRECOGNIZED_PROPERTY_EXCEPTION_FORMAT = "Parameter \"%s\" for plugin \"%s\" does not exist. Available options include %s."; + static final String JSON_MAPPING_EXCEPTION_FORMAT = "Parameter \"%s\" for plugin \"%s\" is invalid: %s"; + static final String GENERIC_PLUGIN_EXCEPTION_FORMAT = "Plugin \"%s\" is invalid: %s"; + + static final Integer MIN_DISTANCE_TO_RECOMMEND_PROPERTY = 3; + + private final LevenshteinDistance levenshteinDistance; + + @Inject + public PluginConfigurationErrorHandler(final LevenshteinDistance levenshteinDistance) { + this.levenshteinDistance = levenshteinDistance; + } + + public RuntimeException handleException(final PluginSetting pluginSetting, final Exception e) { + if (e.getCause() instanceof UnrecognizedPropertyException) { + return handleUnrecognizedPropertyException((UnrecognizedPropertyException) e.getCause(), pluginSetting); + } else if (e.getCause() instanceof JsonMappingException) { + return handleJsonMappingException((JsonMappingException) e.getCause(), pluginSetting); + } + + return new InvalidPluginConfigurationException( + String.format(GENERIC_PLUGIN_EXCEPTION_FORMAT, pluginSetting.getName(), e.getMessage())); + } + private RuntimeException handleJsonMappingException(final JsonMappingException e, final PluginSetting pluginSetting) { + final String parameterPath = getParameterPath(e.getPath()); + + final String errorMessage = String.format(JSON_MAPPING_EXCEPTION_FORMAT, + parameterPath, pluginSetting.getName(), e.getOriginalMessage()); + + return new InvalidPluginConfigurationException(errorMessage); + } + + private RuntimeException handleUnrecognizedPropertyException(final UnrecognizedPropertyException e, final PluginSetting pluginSetting) { + String errorMessage = String.format(UNRECOGNIZED_PROPERTY_EXCEPTION_FORMAT, + getParameterPath(e.getPath()), + pluginSetting.getName(), + e.getKnownPropertyIds()); + + final Optional closestRecommendation = getClosestField(e); + + if (closestRecommendation.isPresent()) { + errorMessage += " Did you mean \"" + closestRecommendation.get() + "\"?"; + } + + return new InvalidPluginConfigurationException(errorMessage); + } + + private Optional getClosestField(final UnrecognizedPropertyException e) { + String closestMatch = null; + int smallestDistance = Integer.MAX_VALUE; + + for (final String field : e.getKnownPropertyIds().stream().map(Object::toString).collect(Collectors.toList())) { + int distance = levenshteinDistance.apply(e.getPropertyName(), field); + + if (distance < smallestDistance) { + smallestDistance = distance; + closestMatch = field; + } + } + + if (smallestDistance <= MIN_DISTANCE_TO_RECOMMEND_PROPERTY) { + return Optional.ofNullable(closestMatch); + } + + return Optional.empty(); + } + + private String getParameterPath(final List path) { + return path.stream() + .map(JsonMappingException.Reference::getFieldName) + .collect(Collectors.joining(".")); + } +} diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginCreator.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginCreator.java index 857f519b31..d718bf6bc4 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginCreator.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginCreator.java @@ -54,10 +54,10 @@ T newPluginInstance(final Class pluginClass, } catch (final IllegalAccessException | InstantiationException ex) { LOG.error("Encountered exception while instantiating the plugin {}", pluginClass.getSimpleName(), ex); throw new InvalidPluginDefinitionException( - "Unable to access or instantiate the plugin '" + pluginClass.getSimpleName() + ".'", ex); + "Unable to access or instantiate the plugin \"" + pluginName + "\".", ex); } catch (final InvocationTargetException ex) { LOG.error("Encountered exception while instantiating the plugin {}", pluginClass.getSimpleName(), ex); - throw new PluginInvocationException("Exception throw from the plugin'" + pluginClass.getSimpleName() + "'." , ex); + throw new PluginInvocationException("Exception thrown from plugin \"" + pluginName + "\".", ex.getTargetException()); } } diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginProvider.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginProvider.java index dd15176569..3aff8b0e3c 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginProvider.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/PluginProvider.java @@ -5,6 +5,7 @@ package org.opensearch.dataprepper.plugin; +import java.util.Collection; import java.util.Optional; /** @@ -27,4 +28,15 @@ public interface PluginProvider { * @since 1.2 */ Optional> findPluginClass(Class pluginType, String pluginName); + + /** + * Finds the Java classes for a specific pluginType. + * + * @param pluginType The type of plugin which is being supported. + * e.g. {@link org.opensearch.dataprepper.model.sink.Sink}. + * @param The type + * @return An {@link Collection} of Java classes for plugins + * @since 1.2 + */ + Collection> findPluginClasses(Class pluginType); } diff --git a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ValidatorConfiguration.java b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ValidatorConfiguration.java index 31c6a7079a..4a3dc0893a 100644 --- a/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ValidatorConfiguration.java +++ b/data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ValidatorConfiguration.java @@ -8,6 +8,7 @@ import jakarta.validation.Validation; import jakarta.validation.Validator; import jakarta.validation.ValidatorFactory; +import org.apache.commons.text.similarity.LevenshteinDistance; import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator; import org.springframework.context.annotation.Bean; @@ -26,4 +27,9 @@ Validator validator() { .buildValidatorFactory(); return validationFactory.getValidator(); } + + @Bean + LevenshteinDistance levenshteinDistance() { + return new LevenshteinDistance(); + } } diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ClasspathPluginProviderTest.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ClasspathPluginProviderTest.java index 88763164dd..56ec0f4167 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ClasspathPluginProviderTest.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ClasspathPluginProviderTest.java @@ -8,7 +8,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.sink.Sink; import org.opensearch.dataprepper.model.source.Source; import org.opensearch.dataprepper.plugins.test.TestSink; @@ -16,13 +19,16 @@ import org.reflections.Reflections; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.UUID; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.BDDMockito.given; @@ -59,6 +65,22 @@ void findPlugin_should_scan_for_plugins() { .getTypesAnnotatedWith(DataPrepperPlugin.class); } + @Test + void findPlugins_should_scan_for_plugins() { + final ClasspathPluginProvider objectUnderTest = createObjectUnderTest(); + + then(reflections).shouldHaveNoInteractions(); + + given(reflections.getTypesAnnotatedWith(DataPrepperPlugin.class)) + .willReturn(Collections.emptySet()); + + objectUnderTest.findPluginClasses(Sink.class); + + then(reflections) + .should() + .getTypesAnnotatedWith(DataPrepperPlugin.class); + } + @Test void findPlugin_should_scan_for_plugins_only_once() { final ClasspathPluginProvider objectUnderTest = createObjectUnderTest(); @@ -74,6 +96,21 @@ void findPlugin_should_scan_for_plugins_only_once() { .getTypesAnnotatedWith(DataPrepperPlugin.class); } + @Test + void findPlugins_should_scan_for_plugins_only_once() { + final ClasspathPluginProvider objectUnderTest = createObjectUnderTest(); + + given(reflections.getTypesAnnotatedWith(DataPrepperPlugin.class)) + .willReturn(Collections.emptySet()); + + for (int i = 0; i < 10; i++) + objectUnderTest.findPluginClasses(Sink.class); + + then(reflections) + .should() + .getTypesAnnotatedWith(DataPrepperPlugin.class); + } + @Test void findPlugin_should_return_empty_if_no_plugins_found() { given(reflections.getTypesAnnotatedWith(DataPrepperPlugin.class)) @@ -105,6 +142,40 @@ void findPlugin_should_return_plugin_if_found_for_deprecated_name_and_type_using assertThat(optionalPlugin.get(), equalTo(TestSource.class)); } + @Test + void findPlugin_should_return_empty_for_default_alternate_name() { + given(reflections.getTypesAnnotatedWith(DataPrepperPlugin.class)) + .willReturn(new HashSet<>(List.of(TestSource.class))); + + final Optional> optionalPlugin = createObjectUnderTest() + .findPluginClass(Source.class, UUID.randomUUID().toString()); + assertThat(optionalPlugin, notNullValue()); + assertThat(optionalPlugin.isPresent(), equalTo(false)); + } + + @ParameterizedTest + @ValueSource(strings = {"test_source_alternate_name1", "test_source_alternate_name2"}) + void findPlugin_should_return_plugin_if_found_for_alternate_name_and_type_using_pluginType(final String alternateSourceName) { + given(reflections.getTypesAnnotatedWith(DataPrepperPlugin.class)) + .willReturn(new HashSet<>(List.of(TestSource.class))); + + final Optional> optionalPlugin = createObjectUnderTest().findPluginClass(Source.class, alternateSourceName); + assertThat(optionalPlugin, notNullValue()); + assertThat(optionalPlugin.isPresent(), equalTo(true)); + assertThat(optionalPlugin.get(), equalTo(TestSource.class)); + } + + @Test + void findPlugins_should_return_empty_if_no_plugins_found() { + given(reflections.getTypesAnnotatedWith(DataPrepperPlugin.class)) + .willReturn(Collections.emptySet()); + + final Collection> foundPlugins = createObjectUnderTest().findPluginClasses( + PluginSetting.class); + assertThat(foundPlugins, notNullValue()); + assertThat(foundPlugins.isEmpty(), is(true)); + } + @Nested class WithPredefinedPlugins { @@ -136,5 +207,13 @@ void findPlugin_should_return_plugin_if_found_for_name_and_type_using_pluginType assertThat(optionalPlugin.isPresent(), equalTo(true)); assertThat(optionalPlugin.get(), equalTo(TestSink.class)); } + + @Test + void findPlugins_should_return_plugins_if_plugin_found_for_specified_type() { + final Set> foundPlugins = createObjectUnderTest().findPluginClasses(Source.class); + assertThat(foundPlugins, notNullValue()); + assertThat(foundPlugins.size(), equalTo(1)); + assertThat(foundPlugins.stream().iterator().next(), equalTo(TestSource.class)); + } } } \ No newline at end of file diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryTest.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryTest.java index 64b053a924..6f54a55c95 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryTest.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/DefaultPluginFactoryTest.java @@ -18,6 +18,8 @@ import org.opensearch.dataprepper.model.plugin.NoPluginFoundException; import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; import org.opensearch.dataprepper.model.sink.Sink; +import org.opensearch.dataprepper.model.source.Source; +import org.opensearch.dataprepper.plugins.test.TestDISource; import org.opensearch.dataprepper.plugins.test.TestSink; import org.springframework.beans.factory.BeanFactory; @@ -192,6 +194,25 @@ void setUp() { .willReturn(Optional.of(expectedPluginClass)); } + @Test + void loadPlugin_should_create_a_new_instance_of_the_plugin_with_di_initialized() { + + final TestDISource expectedInstance = mock(TestDISource.class); + final Object convertedConfiguration = mock(Object.class); + given(pluginConfigurationConverter.convert(PluginSetting.class, pluginSetting)) + .willReturn(convertedConfiguration); + given(firstPluginProvider.findPluginClass(Source.class, pluginName)) + .willReturn(Optional.of(TestDISource.class)); + given(pluginCreator.newPluginInstance(eq(TestDISource.class), any(ComponentPluginArgumentsContext.class), eq(pluginName))) + .willReturn(expectedInstance); + + assertThat(createObjectUnderTest().loadPlugin(Source.class, pluginSetting), + equalTo(expectedInstance)); + verify(pluginConfigurationObservableFactory).createDefaultPluginConfigObservable(eq(pluginConfigurationConverter), + eq(PluginSetting.class), eq(pluginSetting)); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{TestDISource.class}, convertedConfiguration); + } + @Test void loadPlugin_should_create_a_new_instance_of_the_first_plugin_found() { @@ -206,7 +227,7 @@ void loadPlugin_should_create_a_new_instance_of_the_first_plugin_found() { equalTo(expectedInstance)); verify(pluginConfigurationObservableFactory).createDefaultPluginConfigObservable(eq(pluginConfigurationConverter), eq(PluginSetting.class), eq(pluginSetting)); - verify(beanFactoryProvider).get(); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, convertedConfiguration); } @Test @@ -240,7 +261,7 @@ void loadPlugins_should_return_an_empty_list_when_the_number_of_instances_is_0() assertThat(plugins, notNullValue()); assertThat(plugins.size(), equalTo(0)); - verify(beanFactoryProvider).get(); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, null); verifyNoInteractions(pluginCreator); } @@ -256,7 +277,7 @@ void loadPlugins_should_return_a_single_instance_when_the_the_numberOfInstances_ final List plugins = createObjectUnderTest().loadPlugins( baseClass, pluginSetting, c -> 1); - verify(beanFactoryProvider).get(); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, convertedConfiguration); verify(pluginConfigurationObservableFactory).createDefaultPluginConfigObservable(eq(pluginConfigurationConverter), eq(PluginSetting.class), eq(pluginSetting)); final ArgumentCaptor pluginArgumentsContextArgCapture = ArgumentCaptor.forClass(ComponentPluginArgumentsContext.class); @@ -285,7 +306,7 @@ void loadPlugin_with_varargs_should_return_a_single_instance_when_the_the_number final Object plugin = createObjectUnderTest().loadPlugin(baseClass, pluginSetting, object); - verify(beanFactoryProvider).get(); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, convertedConfiguration); verify(pluginConfigurationObservableFactory).createDefaultPluginConfigObservable(eq(pluginConfigurationConverter), eq(PluginSetting.class), eq(pluginSetting)); final ArgumentCaptor pluginArgumentsContextArgCapture = ArgumentCaptor.forClass(ComponentPluginArgumentsContext.class); @@ -320,7 +341,7 @@ void loadPlugins_should_return_an_instance_for_the_total_count() { final List plugins = createObjectUnderTest().loadPlugins( baseClass, pluginSetting, c -> 3); - verify(beanFactoryProvider).get(); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, convertedConfiguration); final ArgumentCaptor pluginArgumentsContextArgCapture = ArgumentCaptor.forClass(ComponentPluginArgumentsContext.class); verify(pluginCreator, times(3)).newPluginInstance(eq(expectedPluginClass), pluginArgumentsContextArgCapture.capture(), eq(pluginName)); final List actualPluginArgumentsContextList = pluginArgumentsContextArgCapture.getAllValues(); @@ -356,7 +377,7 @@ void loadPlugins_should_return_a_single_instance_with_values_from_ApplicationCon final List plugins = createObjectUnderTest().loadPlugins( baseClass, pluginSetting, c -> 1); - verify(beanFactoryProvider).get(); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, convertedConfiguration); final ArgumentCaptor pluginArgumentsContextArgCapture = ArgumentCaptor.forClass(ComponentPluginArgumentsContext.class); verify(pluginCreator).newPluginInstance(eq(expectedPluginClass), pluginArgumentsContextArgCapture.capture(), eq(pluginName)); final ComponentPluginArgumentsContext actualPluginArgumentsContext = pluginArgumentsContextArgCapture.getValue(); @@ -398,7 +419,36 @@ void loadPlugin_should_create_a_new_instance_of_the_first_plugin_found_with_corr assertThat(createObjectUnderTest().loadPlugin(baseClass, pluginSetting), equalTo(expectedInstance)); MatcherAssert.assertThat(expectedInstance.getClass().getAnnotation(DataPrepperPlugin.class).deprecatedName(), equalTo(TEST_SINK_DEPRECATED_NAME)); - verify(beanFactoryProvider).get(); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, convertedConfiguration); + } + } + + @Nested + class WithAlternatePluginName { + private static final String TEST_SINK_ALTERNATE_NAME = "test_sink_alternate_name"; + private Class expectedPluginClass; + + @BeforeEach + void setUp() { + expectedPluginClass = TestSink.class; + given(pluginSetting.getName()).willReturn(TEST_SINK_ALTERNATE_NAME); + + given(firstPluginProvider.findPluginClass(baseClass, TEST_SINK_ALTERNATE_NAME)) + .willReturn(Optional.of(expectedPluginClass)); + } + + @Test + void loadPlugin_should_create_a_new_instance_of_the_first_plugin_found_with_correct_name_and_alternate_name() { + final TestSink expectedInstance = mock(TestSink.class); + final Object convertedConfiguration = mock(Object.class); + given(pluginConfigurationConverter.convert(PluginSetting.class, pluginSetting)) + .willReturn(convertedConfiguration); + given(pluginCreator.newPluginInstance(eq(expectedPluginClass), any(ComponentPluginArgumentsContext.class), eq(TEST_SINK_ALTERNATE_NAME))) + .willReturn(expectedInstance); + + assertThat(createObjectUnderTest().loadPlugin(baseClass, pluginSetting), equalTo(expectedInstance)); + MatcherAssert.assertThat(expectedInstance.getClass().getAnnotation(DataPrepperPlugin.class).alternateNames(), equalTo(new String[]{TEST_SINK_ALTERNATE_NAME})); + verify(beanFactoryProvider).createPluginSpecificContext(new Class[]{}, convertedConfiguration); } } } diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ExtensionLoaderTest.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ExtensionLoaderTest.java index bf46579377..4fdc64f283 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ExtensionLoaderTest.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ExtensionLoaderTest.java @@ -25,7 +25,7 @@ import org.opensearch.dataprepper.plugins.test.TestExtensionConfig; import org.opensearch.dataprepper.plugins.test.TestExtensionWithConfig; import org.opensearch.dataprepper.validation.PluginError; -import org.opensearch.dataprepper.validation.PluginErrorCollector; +import org.opensearch.dataprepper.core.validation.PluginErrorCollector; import org.opensearch.dataprepper.validation.PluginErrorsHandler; import java.util.ArrayList; diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ObjectMapperConfigurationTest.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ObjectMapperConfigurationTest.java index 594d3a47c2..b2cdea61e0 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ObjectMapperConfigurationTest.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/ObjectMapperConfigurationTest.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugin; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -22,6 +24,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.notNullValue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -44,11 +47,12 @@ void test_duration_with_pluginConfigObjectMapper() { } @Test - void test_enum_with_pluginConfigObjectMapper() { - final String testString = "test"; + void test_enum_with_pluginConfigObjectMapper() throws JsonProcessingException { + final String testModelAsString = "{ \"name\": \"my-name\", \"test_type\": \"test\" }"; final ObjectMapper objectMapper = objectMapperConfiguration.pluginConfigObjectMapper(variableExpander, eventKeyFactory); - final TestType duration = objectMapper.convertValue(testString, TestType.class); - assertThat(duration, equalTo(TestType.fromOptionValue(testString))); + final TestModel testModel = objectMapper.readValue(testModelAsString, TestModel.class); + assertThat(testModel, notNullValue()); + assertThat(testModel.getTestType(), equalTo(TestType.TEST)); } @Test @@ -60,11 +64,12 @@ void test_duration_with_extensionPluginConfigObjectMapper() { } @Test - void test_enum_with_extensionPluginConfigObjectMapper() { - final String testString = "test"; + void test_enum_with_extensionPluginConfigObjectMapper() throws JsonProcessingException { + final String testModelAsString = "{ \"name\": \"my-name\", \"test_type\": \"test\" }"; final ObjectMapper objectMapper = objectMapperConfiguration.extensionPluginConfigObjectMapper(); - final TestType duration = objectMapper.convertValue(testString, TestType.class); - assertThat(duration, equalTo(TestType.fromOptionValue(testString))); + final TestModel testModel = objectMapper.readValue(testModelAsString, TestModel.class); + assertThat(testModel, notNullValue()); + assertThat(testModel.getTestType(), equalTo(TestType.TEST)); } @Test @@ -100,4 +105,26 @@ static TestType fromOptionValue(final String option) { } } + private static class TestModel { + @JsonProperty("name") + private final String name; + + @JsonProperty("test_type") + private final TestType testType; + + public TestModel(@JsonProperty("name") final String name, + @JsonProperty("test_type") final TestType testType) { + this.name = name; + this.testType = testType; + } + + public String getName() { + return name; + } + + public TestType getTestType() { + return testType; + } + } + } \ No newline at end of file diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProviderTest.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProviderTest.java index 14681b27eb..a80e42c011 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProviderTest.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginBeanFactoryProviderTest.java @@ -7,9 +7,21 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.plugins.test.TestComponent; import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.ListableBeanFactory; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.support.GenericApplicationContext; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.function.Predicate; +import java.util.stream.Collectors; + import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; @@ -21,6 +33,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; class PluginBeanFactoryProviderTest { @@ -48,14 +61,14 @@ void testPluginBeanFactoryProviderUsesParentContext() { @Test void testPluginBeanFactoryProviderRequiresContext() { context = null; - assertThrows(NullPointerException.class, () -> createObjectUnderTest()); + assertThrows(NullPointerException.class, this::createObjectUnderTest); } @Test void testPluginBeanFactoryProviderRequiresParentContext() { context = mock(GenericApplicationContext.class); - assertThrows(NullPointerException.class, () -> createObjectUnderTest()); + assertThrows(NullPointerException.class, this::createObjectUnderTest); } @Test @@ -65,7 +78,7 @@ void testPluginBeanFactoryProviderGetReturnsBeanFactory() { final PluginBeanFactoryProvider beanFactoryProvider = createObjectUnderTest(); verify(context).getParent(); - assertThat(beanFactoryProvider.get(), is(instanceOf(BeanFactory.class))); + assertThat(beanFactoryProvider.createPluginSpecificContext(new Class[]{}, null), is(instanceOf(BeanFactory.class))); } @Test @@ -73,8 +86,8 @@ void testPluginBeanFactoryProviderGetReturnsUniqueBeanFactory() { doReturn(context).when(context).getParent(); final PluginBeanFactoryProvider beanFactoryProvider = createObjectUnderTest(); - final BeanFactory isolatedBeanFactoryA = beanFactoryProvider.get(); - final BeanFactory isolatedBeanFactoryB = beanFactoryProvider.get(); + final BeanFactory isolatedBeanFactoryA = beanFactoryProvider.createPluginSpecificContext(new Class[]{}, null); + final BeanFactory isolatedBeanFactoryB = beanFactoryProvider.createPluginSpecificContext(new Class[]{}, null); verify(context).getParent(); assertThat(isolatedBeanFactoryA, not(sameInstance(isolatedBeanFactoryB))); @@ -95,4 +108,62 @@ void getSharedPluginApplicationContext_called_multiple_times_returns_same_instan final PluginBeanFactoryProvider objectUnderTest = createObjectUnderTest(); assertThat(objectUnderTest.getSharedPluginApplicationContext(), sameInstance(objectUnderTest.getSharedPluginApplicationContext())); } + + @Test + void testCreatePluginSpecificContext() { + when(context.getParent()).thenReturn(context); + final PluginBeanFactoryProvider objectUnderTest = createObjectUnderTest(); + BeanFactory beanFactory = objectUnderTest.createPluginSpecificContext(new Class[]{TestComponent.class}, null); + assertThat(beanFactory, notNullValue()); + assertThat(beanFactory.getBean(TestComponent.class), notNullValue()); + } + + @Test + void testCreatePluginSpecificContext_with_empty_array() { + when(context.getParent()).thenReturn(context); + final PluginBeanFactoryProvider objectUnderTest = createObjectUnderTest(); + BeanFactory beanFactory = objectUnderTest.createPluginSpecificContext(new Class[]{}, null); + assertThat(beanFactory, notNullValue()); + assertThat(beanFactory, instanceOf(ListableBeanFactory.class)); + ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory; + List nonSpringBeans = Arrays.stream(listableBeanFactory.getBeanDefinitionNames()) + .filter(Predicate.not(name -> name.startsWith("org.springframework"))) + .collect(Collectors.toList()); + assertThat(nonSpringBeans, equalTo(Collections.emptyList())); + } + + @Test + void testCreatePluginSpecificContext_with_pipeline_settings() { + when(context.getParent()).thenReturn(context); + final PluginBeanFactoryProvider objectUnderTest = createObjectUnderTest(); + PluginSetting pipelineSettings = new PluginSetting(UUID.randomUUID().toString(), Map.of("key", "val")); + BeanFactory beanFactory = objectUnderTest.createPluginSpecificContext(new Class[]{}, pipelineSettings); + assertThat(beanFactory, notNullValue()); + assertThrows(NoSuchBeanDefinitionException.class, ()->beanFactory.getBean(PluginSetting.class)); + } + + @Test + void testCreatePluginSpecificContext_with_empty_array_with_plugin_config() { + when(context.getParent()).thenReturn(context); + final PluginBeanFactoryProvider objectUnderTest = createObjectUnderTest(); + TestPluginConfiguration config = new TestPluginConfiguration(); + BeanFactory beanFactory = objectUnderTest.createPluginSpecificContext(new Class[]{}, config); + assertThat(beanFactory, notNullValue()); + assertThrows(NoSuchBeanDefinitionException.class, ()->beanFactory.getBean(TestComponent.class)); + assertThrows(NoSuchBeanDefinitionException.class, ()->beanFactory.getBean(TestPluginConfiguration.class)); + } + + @Test + void testCreatePluginSpecificContext_with_plugin_config() { + when(context.getParent()).thenReturn(context); + final PluginBeanFactoryProvider objectUnderTest = createObjectUnderTest(); + TestPluginConfiguration config = new TestPluginConfiguration(); + String requiredStringValue = UUID.randomUUID().toString(); + config.setRequiredString(requiredStringValue); + BeanFactory beanFactory = objectUnderTest.createPluginSpecificContext(new Class[]{TestComponent.class}, config); + assertThat(beanFactory, notNullValue()); + assertThat(beanFactory.getBean(TestComponent.class), notNullValue()); + assertThat(beanFactory.getBean(TestPluginConfiguration.class), notNullValue()); + assertThat(beanFactory.getBean(TestPluginConfiguration.class).getRequiredString(), equalTo(requiredStringValue)); + } } \ No newline at end of file diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverterTest.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverterTest.java index 91df976a76..bd00826277 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverterTest.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginConfigurationConverterTest.java @@ -7,14 +7,23 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; -import org.opensearch.dataprepper.model.configuration.PluginSetting; -import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import jakarta.validation.ConstraintViolation; import jakarta.validation.Path; +import jakarta.validation.Payload; import jakarta.validation.Validator; +import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.metadata.ConstraintDescriptor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import javax.annotation.Nonnull; +import javax.annotation.meta.When; +import java.lang.annotation.Annotation; import java.util.Collections; import java.util.UUID; @@ -31,11 +40,16 @@ import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +@ExtendWith(MockitoExtension.class) class PluginConfigurationConverterTest { private PluginSetting pluginSetting; private Validator validator; - private final ObjectMapper objectMapper = new ObjectMapper(); + + @Mock + private PluginConfigurationErrorHandler pluginConfigurationErrorHandler; + private ObjectMapper objectMapper = new ObjectMapper(); static class TestConfiguration { @SuppressWarnings("unused") @@ -55,7 +69,7 @@ void setUp() { } private PluginConfigurationConverter createObjectUnderTest() { - return new PluginConfigurationConverter(validator, objectMapper); + return new PluginConfigurationConverter(validator, objectMapper, pluginConfigurationErrorHandler); } @Test @@ -130,7 +144,7 @@ void convert_with_other_target_should_validate_configuration() { } @Test - void convert_with_other_target_should_throw_exception_when_there_are_constraint_violations() { + void convert_with_other_target_should_throw_exception_when_there_are_constraint_violations_with_for_non_assert_true() { final String value = UUID.randomUUID().toString(); given(pluginSetting.getSettings()) @@ -152,6 +166,23 @@ void convert_with_other_target_should_throw_exception_when_there_are_constraint_ given(propertyPath.toString()).willReturn(propertyPathString); given(constraintViolation.getPropertyPath()).willReturn(propertyPath); + final ConstraintDescriptor constraintDescriptor = mock(ConstraintDescriptor.class); + given(constraintViolation.getConstraintDescriptor()).willReturn(constraintDescriptor); + + Nonnull annotation = new Nonnull() { + @Override + public When when() { + return null; + } + + @Override + public Class annotationType() { + return Nonnull.class; + } + }; + + when(constraintDescriptor.getAnnotation()).thenReturn(annotation); + given(validator.validate(any())) .willReturn(Collections.singleton(constraintViolation)); @@ -165,4 +196,103 @@ void convert_with_other_target_should_throw_exception_when_there_are_constraint_ assertThat(actualException.getMessage(), containsString(propertyPathString)); assertThat(actualException.getMessage(), containsString(errorMessage)); } + + @Test + void convert_with_other_target_should_throw_exception_when_there_are_constraint_violations_with_assert_true_annotation() { + + final String value = UUID.randomUUID().toString(); + given(pluginSetting.getSettings()) + .willReturn(Collections.singletonMap("my_value", value)); + + final String pluginName = UUID.randomUUID().toString(); + given(pluginSetting.getName()) + .willReturn(pluginName); + + final String pipelineName = UUID.randomUUID().toString(); + given(pluginSetting.getPipelineName()) + .willReturn(pipelineName); + + @SuppressWarnings("unchecked") final ConstraintViolation constraintViolation = mock(ConstraintViolation.class); + final String errorMessage = UUID.randomUUID().toString(); + given(constraintViolation.getMessage()).willReturn(errorMessage); + + final ConstraintDescriptor constraintDescriptor = mock(ConstraintDescriptor.class); + given(constraintViolation.getConstraintDescriptor()).willReturn(constraintDescriptor); + + AssertTrue annotation = new AssertTrue() { + @Override + public String message() { + return null; + } + + @Override + public Class[] groups() { + return new Class[0]; + } + + @Override + public Class[] payload() { + return new Class[0]; + } + + @Override + public Class annotationType() { + return AssertTrue.class; + } + }; + + when(constraintDescriptor.getAnnotation()).thenReturn(annotation); + + given(validator.validate(any())) + .willReturn(Collections.singleton(constraintViolation)); + + final PluginConfigurationConverter objectUnderTest = createObjectUnderTest(); + + final InvalidPluginConfigurationException actualException = assertThrows(InvalidPluginConfigurationException.class, + () -> objectUnderTest.convert(TestConfiguration.class, pluginSetting)); + + assertThat(actualException.getMessage(), containsString(pluginName)); + assertThat(actualException.getMessage(), containsString(pipelineName)); + assertThat(actualException.getMessage(), containsString(errorMessage)); + } + + @Test + void convert_with_error_when_converting_with_object_mapper_calls_plugin_configuration_error_handler() { + objectMapper = mock(ObjectMapper.class); + + final String value = UUID.randomUUID().toString(); + given(pluginSetting.getSettings()) + .willReturn(Collections.singletonMap("my_value", value)); + + final RuntimeException e = mock(RuntimeException.class); + + when(objectMapper.convertValue(pluginSetting.getSettings(), TestConfiguration.class)) + .thenThrow(e); + + when(pluginConfigurationErrorHandler.handleException(pluginSetting, e)).thenReturn(new IllegalArgumentException()); + + final PluginConfigurationConverter objectUnderTest = createObjectUnderTest(); + + assertThrows(IllegalArgumentException.class, () -> objectUnderTest.convert(TestConfiguration.class, pluginSetting)); + } + + @Test + void convert_with_error_when_throws_InvalidPluginConfiguration_when_plugin_configuration_error_handler_does_not_throw() { + objectMapper = mock(ObjectMapper.class); + + final String value = UUID.randomUUID().toString(); + given(pluginSetting.getSettings()) + .willReturn(Collections.singletonMap("my_value", value)); + + final RuntimeException e = mock(RuntimeException.class); + + when(objectMapper.convertValue(pluginSetting.getSettings(), TestConfiguration.class)) + .thenThrow(e); + + when(pluginConfigurationErrorHandler.handleException(pluginSetting, e)).thenReturn(new InvalidPluginConfigurationException(UUID.randomUUID().toString())); + + final PluginConfigurationConverter objectUnderTest = createObjectUnderTest(); + + assertThrows(InvalidPluginConfigurationException.class, () -> objectUnderTest.convert(TestConfiguration.class, pluginSetting)); + } } \ No newline at end of file diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginConfigurationErrorHandlerTest.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginConfigurationErrorHandlerTest.java new file mode 100644 index 0000000000..8989a91077 --- /dev/null +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugin/PluginConfigurationErrorHandlerTest.java @@ -0,0 +1,183 @@ +package org.opensearch.dataprepper.plugin; + +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; +import org.apache.commons.text.similarity.LevenshteinDistance; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; + +import java.util.List; +import java.util.UUID; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.opensearch.dataprepper.plugin.PluginConfigurationErrorHandler.GENERIC_PLUGIN_EXCEPTION_FORMAT; +import static org.opensearch.dataprepper.plugin.PluginConfigurationErrorHandler.JSON_MAPPING_EXCEPTION_FORMAT; +import static org.opensearch.dataprepper.plugin.PluginConfigurationErrorHandler.MIN_DISTANCE_TO_RECOMMEND_PROPERTY; +import static org.opensearch.dataprepper.plugin.PluginConfigurationErrorHandler.UNRECOGNIZED_PROPERTY_EXCEPTION_FORMAT; + +@ExtendWith(MockitoExtension.class) +public class PluginConfigurationErrorHandlerTest { + + @Mock + private LevenshteinDistance levenshteinDistance; + + private PluginConfigurationErrorHandler createObjectUnderTest() { + return new PluginConfigurationErrorHandler(levenshteinDistance); + } + + @Test + void handle_exception_with_unrecognized_property_exception_throws_expected_exception_without_parameter_recommendation() { + final List knownPropertyIds = List.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + final String pluginName = UUID.randomUUID().toString(); + final String propertyName = UUID.randomUUID().toString(); + + final JsonMappingException.Reference firstPathReference = mock(JsonMappingException.Reference.class); + when(firstPathReference.getFieldName()).thenReturn(UUID.randomUUID().toString()); + + final JsonMappingException.Reference secondPathReference = mock(JsonMappingException.Reference.class); + when(secondPathReference.getFieldName()).thenReturn(UUID.randomUUID().toString()); + + final List path = List.of(firstPathReference, secondPathReference); + + final PluginSetting pluginSetting = mock(PluginSetting.class); + when(pluginSetting.getName()).thenReturn(pluginName); + + final RuntimeException exception = mock(RuntimeException.class); + + final UnrecognizedPropertyException unrecognizedPropertyException = mock(UnrecognizedPropertyException.class); + when(unrecognizedPropertyException.getKnownPropertyIds()).thenReturn(knownPropertyIds); + when(unrecognizedPropertyException.getPropertyName()).thenReturn(propertyName); + when(unrecognizedPropertyException.getPath()).thenReturn(path); + + when(exception.getCause()).thenReturn(unrecognizedPropertyException); + + when(levenshteinDistance.apply(eq(propertyName), anyString())).thenReturn(10).thenReturn(MIN_DISTANCE_TO_RECOMMEND_PROPERTY + 1); + + final PluginConfigurationErrorHandler objectUnderTest = createObjectUnderTest(); + + final Exception resultingException = objectUnderTest.handleException(pluginSetting, exception); + assertThat(resultingException instanceof InvalidPluginConfigurationException, equalTo(true)); + + final String expectedErrorMessage = String.format(UNRECOGNIZED_PROPERTY_EXCEPTION_FORMAT, + firstPathReference.getFieldName() + "." + secondPathReference.getFieldName(), + pluginName, + knownPropertyIds); + + assertThat(resultingException.getMessage(), equalTo(expectedErrorMessage)); + } + + @Test + void handle_exception_with_unrecognized_property_exception_throws_expected_exception_with_parameter_recommendation() { + final List knownPropertyIds = List.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + final String pluginName = UUID.randomUUID().toString(); + final String propertyName = UUID.randomUUID().toString(); + + final JsonMappingException.Reference firstPathReference = mock(JsonMappingException.Reference.class); + when(firstPathReference.getFieldName()).thenReturn(UUID.randomUUID().toString()); + + final JsonMappingException.Reference secondPathReference = mock(JsonMappingException.Reference.class); + when(secondPathReference.getFieldName()).thenReturn(UUID.randomUUID().toString()); + + final List path = List.of(firstPathReference, secondPathReference); + + final PluginSetting pluginSetting = mock(PluginSetting.class); + when(pluginSetting.getName()).thenReturn(pluginName); + + final RuntimeException exception = mock(RuntimeException.class); + + final UnrecognizedPropertyException unrecognizedPropertyException = mock(UnrecognizedPropertyException.class); + when(unrecognizedPropertyException.getKnownPropertyIds()).thenReturn(knownPropertyIds); + when(unrecognizedPropertyException.getPropertyName()).thenReturn(propertyName); + when(unrecognizedPropertyException.getPath()).thenReturn(path); + + when(exception.getCause()).thenReturn(unrecognizedPropertyException); + + when(levenshteinDistance.apply(eq(propertyName), anyString())).thenReturn(10).thenReturn(MIN_DISTANCE_TO_RECOMMEND_PROPERTY - 1); + + final PluginConfigurationErrorHandler objectUnderTest = createObjectUnderTest(); + + final Exception resultingException = objectUnderTest.handleException(pluginSetting, exception); + assertThat(resultingException instanceof InvalidPluginConfigurationException, equalTo(true)); + + String expectedErrorMessage = String.format(UNRECOGNIZED_PROPERTY_EXCEPTION_FORMAT, + firstPathReference.getFieldName() + "." + secondPathReference.getFieldName(), + pluginName, + knownPropertyIds); + + expectedErrorMessage += " Did you mean \"" + knownPropertyIds.get(1).toString() + "\"?"; + + + + assertThat(resultingException.getMessage(), equalTo(expectedErrorMessage)); + } + + @Test + void handle_exception_with_json_mapping_exception_returns_expected_error_message() { + final String pluginName = UUID.randomUUID().toString(); + + final JsonMappingException.Reference firstPathReference = mock(JsonMappingException.Reference.class); + when(firstPathReference.getFieldName()).thenReturn(UUID.randomUUID().toString()); + + final JsonMappingException.Reference secondPathReference = mock(JsonMappingException.Reference.class); + when(secondPathReference.getFieldName()).thenReturn(UUID.randomUUID().toString()); + + final List path = List.of(firstPathReference, secondPathReference); + + final PluginSetting pluginSetting = mock(PluginSetting.class); + when(pluginSetting.getName()).thenReturn(pluginName); + + final RuntimeException exception = mock(RuntimeException.class); + + final JsonMappingException jsonMappingException = mock(JsonMappingException.class); + when(jsonMappingException.getPath()).thenReturn(path); + when(jsonMappingException.getOriginalMessage()).thenReturn(UUID.randomUUID().toString()); + + when(exception.getCause()).thenReturn(jsonMappingException); + + final PluginConfigurationErrorHandler objectUnderTest = createObjectUnderTest(); + + final Exception resultingException = objectUnderTest.handleException(pluginSetting, exception); + assertThat(resultingException instanceof InvalidPluginConfigurationException, equalTo(true)); + + final String expectedErrorMessage = String.format(JSON_MAPPING_EXCEPTION_FORMAT, + firstPathReference.getFieldName() + "." + secondPathReference.getFieldName(), + pluginName, + jsonMappingException.getOriginalMessage()); + + assertThat(resultingException.getMessage(), equalTo(expectedErrorMessage)); + } + + @Test + void non_handled_exception_throws_generic_invalid_plugin_configuration_exception() { + final String pluginName = UUID.randomUUID().toString(); + + final PluginSetting pluginSetting = mock(PluginSetting.class); + when(pluginSetting.getName()).thenReturn(pluginName); + + final RuntimeException exception = mock(RuntimeException.class); + when(exception.getMessage()).thenReturn(UUID.randomUUID().toString()); + + final RuntimeException cause = mock(RuntimeException.class); + when(exception.getCause()).thenReturn(cause); + + final PluginConfigurationErrorHandler objectUnderTest = createObjectUnderTest(); + + final Exception resultingException = objectUnderTest.handleException(pluginSetting, exception); + assertThat(resultingException instanceof InvalidPluginConfigurationException, equalTo(true)); + + final String expectedErrorMessage = String.format(GENERIC_PLUGIN_EXCEPTION_FORMAT, + pluginName, + exception.getMessage()); + + assertThat(resultingException.getMessage(), equalTo(expectedErrorMessage)); + } +} diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/configtest/TestComponentWithConfigInject.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/configtest/TestComponentWithConfigInject.java new file mode 100644 index 0000000000..141f4f5264 --- /dev/null +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/configtest/TestComponentWithConfigInject.java @@ -0,0 +1,22 @@ +package org.opensearch.dataprepper.plugins.configtest; + +import org.opensearch.dataprepper.plugin.TestPluginConfiguration; + +import javax.inject.Named; + +@Named +public class TestComponentWithConfigInject { + private final TestPluginConfiguration configuration; + + public TestComponentWithConfigInject(TestPluginConfiguration configuration) { + this.configuration = configuration; + } + + public String getIdentifier() { + return "test-component-with-plugin-config-injected"; + } + + public TestPluginConfiguration getConfiguration() { + return configuration; + } +} diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/configtest/TestDISourceWithConfig.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/configtest/TestDISourceWithConfig.java new file mode 100644 index 0000000000..ac1947ba73 --- /dev/null +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/configtest/TestDISourceWithConfig.java @@ -0,0 +1,42 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.configtest; + +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.source.Source; +import org.opensearch.dataprepper.plugin.TestPluggableInterface; +import org.opensearch.dataprepper.plugin.TestPluginConfiguration; + +@DataPrepperPlugin(name = "test_di_source_with_config", + alternateNames = { "test_source_alternate_name1", "test_source_alternate_name2" }, + deprecatedName = "test_source_deprecated_name", + pluginType = Source.class, + packagesToScan = {TestDISourceWithConfig.class}, + pluginConfigurationType = TestPluginConfiguration.class +) +public class TestDISourceWithConfig implements Source>, TestPluggableInterface { + + private final TestComponentWithConfigInject testComponent; + + @DataPrepperPluginConstructor + public TestDISourceWithConfig(final TestComponentWithConfigInject testComponent) { + this.testComponent = testComponent; + } + + @Override + public void start(Buffer> buffer) { + } + + public TestComponentWithConfigInject getTestComponent() { + return testComponent; + } + + @Override + public void stop() {} +} diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestComponent.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestComponent.java new file mode 100644 index 0000000000..1f7d21564b --- /dev/null +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestComponent.java @@ -0,0 +1,10 @@ +package org.opensearch.dataprepper.plugins.test; + +import javax.inject.Named; + +@Named +public class TestComponent { + public String getIdentifier() { + return "test-component"; + } +} diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestDISource.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestDISource.java new file mode 100644 index 0000000000..a0c1e73e1e --- /dev/null +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestDISource.java @@ -0,0 +1,39 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.test; + +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.source.Source; +import org.opensearch.dataprepper.plugin.TestPluggableInterface; + +@DataPrepperPlugin(name = "test_di_source", + alternateNames = { "test_source_alternate_name1", "test_source_alternate_name2" }, + deprecatedName = "test_source_deprecated_name", + pluginType = Source.class, + packagesToScan = {TestDISource.class}) +public class TestDISource implements Source>, TestPluggableInterface { + + private final TestComponent testComponent; + + @DataPrepperPluginConstructor + public TestDISource(TestComponent testComponent) { + this.testComponent = testComponent; + } + + @Override + public void start(Buffer> buffer) { + } + + public TestComponent getTestComponent() { + return testComponent; + } + + @Override + public void stop() {} +} diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSink.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSink.java index fc54428ba2..1e2742a0ba 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSink.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSink.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; import java.time.Instant; -@DataPrepperPlugin(name = "test_sink", deprecatedName = "test_sink_deprecated_name", pluginType = Sink.class) +@DataPrepperPlugin(name = "test_sink", alternateNames = "test_sink_alternate_name", deprecatedName = "test_sink_deprecated_name", pluginType = Sink.class) public class TestSink implements Sink> { public boolean isShutdown = false; private final List> collectedRecords; diff --git a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSource.java b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSource.java index 9a7192a370..2ad29f2650 100644 --- a/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSource.java +++ b/data-prepper-plugin-framework/src/test/java/org/opensearch/dataprepper/plugins/test/TestSource.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -@DataPrepperPlugin(name = "test_source", deprecatedName = "test_source_deprecated_name", pluginType = Source.class) +@DataPrepperPlugin(name = "test_source", alternateNames = { "test_source_alternate_name1", "test_source_alternate_name2" }, deprecatedName = "test_source_deprecated_name", pluginType = Source.class) public class TestSource implements Source> { public static final List> TEST_DATA = Stream.of("TEST") .map(Record::new).collect(Collectors.toList()); diff --git a/data-prepper-plugin-schema-cli/build.gradle b/data-prepper-plugin-schema-cli/build.gradle index fdcf46cf92..830a401ae5 100644 --- a/data-prepper-plugin-schema-cli/build.gradle +++ b/data-prepper-plugin-schema-cli/build.gradle @@ -9,6 +9,7 @@ application { dependencies { implementation project(':data-prepper-plugins') + implementation project(':data-prepper-plugin-framework') implementation project(':data-prepper-plugin-schema') implementation 'com.fasterxml.jackson.core:jackson-databind' implementation 'org.reflections:reflections:0.10.2' diff --git a/data-prepper-plugin-schema-cli/src/main/java/org/opensearch/dataprepper/schemas/DataPrepperPluginSchemaExecute.java b/data-prepper-plugin-schema-cli/src/main/java/org/opensearch/dataprepper/schemas/DataPrepperPluginSchemaExecute.java index 75115eb7e6..3f52bd2a20 100644 --- a/data-prepper-plugin-schema-cli/src/main/java/org/opensearch/dataprepper/schemas/DataPrepperPluginSchemaExecute.java +++ b/data-prepper-plugin-schema-cli/src/main/java/org/opensearch/dataprepper/schemas/DataPrepperPluginSchemaExecute.java @@ -1,15 +1,10 @@ package org.opensearch.dataprepper.schemas; -import com.github.victools.jsonschema.generator.Module; import com.github.victools.jsonschema.generator.OptionPreset; import com.github.victools.jsonschema.generator.SchemaVersion; -import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationModule; -import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationOption; -import org.opensearch.dataprepper.schemas.module.CustomJacksonModule; -import org.reflections.Reflections; -import org.reflections.scanners.Scanners; -import org.reflections.util.ClasspathHelper; -import org.reflections.util.ConfigurationBuilder; +import org.opensearch.dataprepper.plugin.ClasspathPluginProvider; +import org.opensearch.dataprepper.plugin.PluginProvider; +import org.opensearch.dataprepper.schemas.module.DataPrepperModules; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import picocli.CommandLine; @@ -19,15 +14,11 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; -import static com.github.victools.jsonschema.module.jackson.JacksonOption.RESPECT_JSONPROPERTY_ORDER; -import static com.github.victools.jsonschema.module.jackson.JacksonOption.RESPECT_JSONPROPERTY_REQUIRED; - public class DataPrepperPluginSchemaExecute implements Runnable { private static final Logger LOG = LoggerFactory.getLogger(DataPrepperPluginSchemaExecute.class); static final String DEFAULT_PLUGINS_CLASSPATH = "org.opensearch.dataprepper.plugins"; @@ -53,16 +44,9 @@ public static void main(String[] args) { @Override public void run() { - final List modules = List.of( - new CustomJacksonModule(RESPECT_JSONPROPERTY_REQUIRED, RESPECT_JSONPROPERTY_ORDER), - new JakartaValidationModule(JakartaValidationOption.NOT_NULLABLE_FIELD_IS_REQUIRED, - JakartaValidationOption.INCLUDE_PATTERN_EXPRESSIONS) - ); - final Reflections reflections = new Reflections(new ConfigurationBuilder() - .setUrls(ClasspathHelper.forPackage(DEFAULT_PLUGINS_CLASSPATH)) - .setScanners(Scanners.TypesAnnotated, Scanners.SubTypes)); + final PluginProvider pluginProvider = new ClasspathPluginProvider(); final PluginConfigsJsonSchemaConverter pluginConfigsJsonSchemaConverter = new PluginConfigsJsonSchemaConverter( - reflections, new JsonSchemaConverter(modules), siteUrl, siteBaseUrl); + pluginProvider, new JsonSchemaConverter(DataPrepperModules.dataPrepperModules(), pluginProvider), siteUrl, siteBaseUrl); final Class pluginType = pluginConfigsJsonSchemaConverter.pluginTypeNameToPluginType(pluginTypeName); final Map pluginNameToJsonSchemaMap = pluginConfigsJsonSchemaConverter.convertPluginConfigsIntoJsonSchemas( SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON, pluginType); diff --git a/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/ExampleValuesInstanceAttributeOverride.java b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/ExampleValuesInstanceAttributeOverride.java new file mode 100644 index 0000000000..49d332e403 --- /dev/null +++ b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/ExampleValuesInstanceAttributeOverride.java @@ -0,0 +1,50 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.schemas; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.github.victools.jsonschema.generator.FieldScope; +import com.github.victools.jsonschema.generator.InstanceAttributeOverrideV2; +import com.github.victools.jsonschema.generator.SchemaGenerationContext; +import org.opensearch.dataprepper.model.annotations.ExampleValues; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +class ExampleValuesInstanceAttributeOverride implements InstanceAttributeOverrideV2 { + @Override + public void overrideInstanceAttributes(final ObjectNode fieldSchema, final FieldScope fieldScope, final SchemaGenerationContext context) { + final ExampleValues exampleValuesAnnotation = fieldScope.getAnnotationConsideringFieldAndGetterIfSupported(ExampleValues.class); + if(exampleValuesAnnotation != null && exampleValuesAnnotation.value().length > 0) { + final ObjectMapper objectMapper = context.getGeneratorConfig().getObjectMapper(); + + addExampleSchema(fieldSchema, objectMapper, exampleValuesAnnotation); + } + } + + private void addExampleSchema(final ObjectNode fieldSchema, final ObjectMapper objectMapper, final ExampleValues exampleValuesAnnotation) { + final List> exampleValues = Arrays.stream(exampleValuesAnnotation.value()) + .map(ExampleValuesInstanceAttributeOverride::createExampleMap).collect(Collectors.toList()); + final ArrayNode exampleNode = objectMapper.convertValue(exampleValues, ArrayNode.class); + + fieldSchema.putArray("examples") + .addAll(exampleNode); + } + + private static Map createExampleMap(final ExampleValues.Example example) { + final HashMap exampleMap = new HashMap<>(); + exampleMap.put("example", example.value()); + if(example.description() != null && !example.description().isEmpty()) { + exampleMap.put("description", example.description()); + } + return exampleMap; + } +} diff --git a/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/JsonSchemaConverter.java b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/JsonSchemaConverter.java index 0985485952..78e79c9fa0 100644 --- a/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/JsonSchemaConverter.java +++ b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/JsonSchemaConverter.java @@ -1,5 +1,7 @@ package org.opensearch.dataprepper.schemas; +import com.fasterxml.classmate.TypeBindings; +import com.fasterxml.classmate.types.ResolvedObjectType; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -10,16 +12,32 @@ import com.github.victools.jsonschema.generator.SchemaGeneratorConfig; import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder; import com.github.victools.jsonschema.generator.SchemaGeneratorConfigPart; +import com.github.victools.jsonschema.generator.SchemaGeneratorGeneralConfigPart; import com.github.victools.jsonschema.generator.SchemaVersion; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; +import org.opensearch.dataprepper.model.event.EventKey; +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.UsesDataPrepperPlugin; +import org.opensearch.dataprepper.plugin.PluginProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.util.Collections; +import java.util.Arrays; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; public class JsonSchemaConverter { + private static final Logger LOG = LoggerFactory.getLogger(JsonSchemaConverter.class); + static final String KEY_VALUE_PAIR_DELIMITER = ":"; static final String DEPRECATED_SINCE_KEY = "deprecated"; private final List jsonSchemaGeneratorModules; + private final PluginProvider pluginProvider; - public JsonSchemaConverter(final List jsonSchemaGeneratorModules) { + public JsonSchemaConverter(final List jsonSchemaGeneratorModules, final PluginProvider pluginProvider) { this.jsonSchemaGeneratorModules = jsonSchemaGeneratorModules; + this.pluginProvider = pluginProvider; } public ObjectNode convertIntoJsonSchema( @@ -30,10 +48,16 @@ public ObjectNode convertIntoJsonSchema( loadJsonSchemaGeneratorModules(configBuilder); final SchemaGeneratorConfigPart scopeSchemaGeneratorConfigPart = configBuilder.forFields(); overrideInstanceAttributeWithDeprecated(scopeSchemaGeneratorConfigPart); + overrideTargetTypeWithUsesDataPrepperPlugin(scopeSchemaGeneratorConfigPart); resolveDefaultValueFromJsonProperty(scopeSchemaGeneratorConfigPart); + resolveDependentRequiresFields(scopeSchemaGeneratorConfigPart); + overrideDataPrepperPluginTypeAttribute(configBuilder.forTypesInGeneral(), schemaVersion, optionPreset); + resolveDataPrepperTypes(scopeSchemaGeneratorConfigPart); + scopeSchemaGeneratorConfigPart.withInstanceAttributeOverride(new ExampleValuesInstanceAttributeOverride()); final SchemaGeneratorConfig config = configBuilder.build(); final SchemaGenerator generator = new SchemaGenerator(config); + return generator.generateSchema(clazz); } @@ -52,6 +76,37 @@ private void overrideInstanceAttributeWithDeprecated( }); } + private void overrideTargetTypeWithUsesDataPrepperPlugin( + final SchemaGeneratorConfigPart scopeSchemaGeneratorConfigPart) { + scopeSchemaGeneratorConfigPart.withTargetTypeOverridesResolver(field -> Optional + .ofNullable(field.getAnnotationConsideringFieldAndGetterIfSupported(UsesDataPrepperPlugin.class)) + .map(usesDataPrepperPlugin -> + pluginProvider.findPluginClasses(usesDataPrepperPlugin.pluginType()).stream()) + .map(stream -> stream.map(specificSubtype -> field.getContext().resolve(specificSubtype))) + .map(stream -> stream.collect(Collectors.toList())) + .orElse(null)); + } + + private void overrideDataPrepperPluginTypeAttribute( + final SchemaGeneratorGeneralConfigPart schemaGeneratorGeneralConfigPart, + final SchemaVersion schemaVersion, final OptionPreset optionPreset) { + schemaGeneratorGeneralConfigPart.withTypeAttributeOverride((node, scope, context) -> { + final DataPrepperPlugin dataPrepperPlugin = scope.getType().getErasedType() + .getAnnotation(DataPrepperPlugin.class); + if (dataPrepperPlugin != null) { + final ObjectNode propertiesNode = node.putObject("properties"); + try { + final ObjectNode schemaNode = this.convertIntoJsonSchema( + schemaVersion, optionPreset, dataPrepperPlugin.pluginConfigurationType()); + propertiesNode.set(dataPrepperPlugin.name(), schemaNode); + } catch (JsonProcessingException e) { + LOG.error("Encountered error retrieving JSON schema for {}", dataPrepperPlugin.name(), e); + throw new RuntimeException(e); + } + } + }); + } + private void resolveDefaultValueFromJsonProperty( final SchemaGeneratorConfigPart scopeSchemaGeneratorConfigPart) { scopeSchemaGeneratorConfigPart.withDefaultResolver(field -> { @@ -59,4 +114,30 @@ private void resolveDefaultValueFromJsonProperty( return annotation == null || annotation.defaultValue().isEmpty() ? null : annotation.defaultValue(); }); } + + private void resolveDependentRequiresFields( + final SchemaGeneratorConfigPart scopeSchemaGeneratorConfigPart) { + scopeSchemaGeneratorConfigPart.withDependentRequiresResolver(field -> Optional + .ofNullable(field.getAnnotationConsideringFieldAndGetter(AlsoRequired.class)) + .map(alsoRequired -> Arrays.stream(alsoRequired.values()) + .map(required -> { + final String property = required.name(); + final String[] allowedValues = required.allowedValues(); + if (allowedValues.length == 0) { + return property; + } + return property + KEY_VALUE_PAIR_DELIMITER + Arrays.toString(allowedValues); + }) + .collect(Collectors.toList())) + .orElse(null)); + } + + private void resolveDataPrepperTypes(final SchemaGeneratorConfigPart scopeSchemaGeneratorConfigPart) { + scopeSchemaGeneratorConfigPart.withTargetTypeOverridesResolver(field -> { + if(field.getType().getErasedType().equals(EventKey.class)) { + return Collections.singletonList(ResolvedObjectType.create(String.class, TypeBindings.emptyBindings(), null, null)); + } + return Collections.singletonList(field.getType()); + }); + } } diff --git a/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverter.java b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverter.java index b7f4c1a531..eb9c29dd63 100644 --- a/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverter.java +++ b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverter.java @@ -1,6 +1,5 @@ package org.opensearch.dataprepper.schemas; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.node.ObjectNode; import com.github.victools.jsonschema.generator.OptionPreset; import com.github.victools.jsonschema.generator.SchemaVersion; @@ -10,7 +9,7 @@ import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.sink.Sink; import org.opensearch.dataprepper.model.source.Source; -import org.reflections.Reflections; +import org.opensearch.dataprepper.plugin.PluginProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,15 +50,15 @@ public class PluginConfigsJsonSchemaConverter { private final String siteUrl; private final String siteBaseUrl; - private final Reflections reflections; + private final PluginProvider pluginProvider; private final JsonSchemaConverter jsonSchemaConverter; public PluginConfigsJsonSchemaConverter( - final Reflections reflections, + final PluginProvider pluginProvider, final JsonSchemaConverter jsonSchemaConverter, final String siteUrl, final String siteBaseUrl) { - this.reflections = reflections; + this.pluginProvider = pluginProvider; this.jsonSchemaConverter = jsonSchemaConverter; this.siteUrl = siteUrl == null ? SITE_URL_PLACEHOLDER : siteUrl; this.siteBaseUrl = siteBaseUrl == null ? SITE_BASE_URL_PLACEHOLDER : siteBaseUrl; @@ -90,8 +89,8 @@ public Map convertPluginConfigsIntoJsonSchemas( addPluginName(jsonSchemaNode, pluginName); addDocumentationLink(jsonSchemaNode, pluginName, pluginType); value = jsonSchemaNode.toPrettyString(); - } catch (JsonProcessingException e) { - LOG.error("Encountered error retrieving JSON schema for {}", pluginName); + } catch (final Exception e) { + LOG.error("Encountered error retrieving JSON schema for {}", pluginName, e); return Stream.empty(); } return Stream.of(Map.entry(entry.getKey(), value)); @@ -107,7 +106,7 @@ private Map> scanForPluginConfigs(final Class pluginType) { if (ConditionalRoute.class.equals(pluginType)) { return Map.of(CONDITIONAL_ROUTE_PROCESSOR_NAME, ConditionalRoute.class); } - return reflections.getTypesAnnotatedWith(DataPrepperPlugin.class).stream() + return pluginProvider.findPluginClasses(pluginType).stream() .map(clazz -> clazz.getAnnotation(DataPrepperPlugin.class)) .filter(dataPrepperPlugin -> pluginType.equals(dataPrepperPlugin.pluginType())) .collect(Collectors.toMap( diff --git a/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/module/DataPrepperJakartaValidationModule.java b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/module/DataPrepperJakartaValidationModule.java new file mode 100644 index 0000000000..a4d27e7d20 --- /dev/null +++ b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/module/DataPrepperJakartaValidationModule.java @@ -0,0 +1,34 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.schemas.module; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.victools.jsonschema.generator.MemberScope; +import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationModule; +import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationOption; + +/** + * Custom {@link JakartaValidationModule} which overrides the default behavior of {@link JakartaValidationModule} + * for Data Prepper. + * It considers the {@link JsonProperty} annotation as well as the Jakarta validations. + */ +class DataPrepperJakartaValidationModule extends JakartaValidationModule { + public DataPrepperJakartaValidationModule(final JakartaValidationOption... options) { + super(options); + } + + @Override + protected boolean isRequired(final MemberScope member) { + final JsonProperty jsonPropertyAnnotation = member.getAnnotationConsideringFieldAndGetter(JsonProperty.class); + if (jsonPropertyAnnotation != null) { + if (jsonPropertyAnnotation.defaultValue() != null && !jsonPropertyAnnotation.defaultValue().isEmpty()) { + return false; + } + } + + return super.isRequired(member); + } +} diff --git a/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/module/DataPrepperModules.java b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/module/DataPrepperModules.java new file mode 100644 index 0000000000..1a169b364b --- /dev/null +++ b/data-prepper-plugin-schema/src/main/java/org/opensearch/dataprepper/schemas/module/DataPrepperModules.java @@ -0,0 +1,25 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.schemas.module; + +import com.github.victools.jsonschema.generator.Module; +import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationOption; + +import java.util.List; + +import static com.github.victools.jsonschema.module.jackson.JacksonOption.FLATTENED_ENUMS_FROM_JSONVALUE; +import static com.github.victools.jsonschema.module.jackson.JacksonOption.RESPECT_JSONPROPERTY_ORDER; +import static com.github.victools.jsonschema.module.jackson.JacksonOption.RESPECT_JSONPROPERTY_REQUIRED; + +public class DataPrepperModules { + public static List dataPrepperModules() { + return List.of( + new DataPrepperJakartaValidationModule(JakartaValidationOption.NOT_NULLABLE_FIELD_IS_REQUIRED, + JakartaValidationOption.INCLUDE_PATTERN_EXPRESSIONS), + new CustomJacksonModule(RESPECT_JSONPROPERTY_REQUIRED, RESPECT_JSONPROPERTY_ORDER, FLATTENED_ENUMS_FROM_JSONVALUE) + ); + } +} diff --git a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/ExampleValuesInstanceAttributeOverrideTest.java b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/ExampleValuesInstanceAttributeOverrideTest.java new file mode 100644 index 0000000000..152cab2bd3 --- /dev/null +++ b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/ExampleValuesInstanceAttributeOverrideTest.java @@ -0,0 +1,187 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.schemas; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.JsonNodeType; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.github.victools.jsonschema.generator.FieldScope; +import com.github.victools.jsonschema.generator.SchemaGenerationContext; +import com.github.victools.jsonschema.generator.SchemaGeneratorConfig; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.model.annotations.ExampleValues; + +import java.util.Map; +import java.util.UUID; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class ExampleValuesInstanceAttributeOverrideTest { + + @Mock + private ObjectNode fieldSchema; + + @Mock + private FieldScope fieldScope; + + @Mock + private SchemaGenerationContext context; + private ObjectMapper objectMapper; + + @BeforeEach + void setUp() { + objectMapper = new ObjectMapper(); + fieldSchema = spy(objectMapper.convertValue(Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()), ObjectNode.class)); + } + + private ExampleValuesInstanceAttributeOverride createObjectUnderTest() { + return new ExampleValuesInstanceAttributeOverride(); + } + + @Test + void overrideInstanceAttributes_does_not_modify_fieldSchema_if_no_ExampleValues_annotation() { + createObjectUnderTest().overrideInstanceAttributes(fieldSchema, fieldScope, context); + + verifyNoInteractions(fieldSchema); + } + + @Nested + class WithExampleValuesAnnotation { + @Mock + private ExampleValues exampleValuesAnnotation; + + @Mock + private SchemaGeneratorConfig schemaGeneratorConfig; + + @BeforeEach + void setUp() { + when(fieldScope.getAnnotationConsideringFieldAndGetterIfSupported(ExampleValues.class)) + .thenReturn(exampleValuesAnnotation); + } + + @Test + void overrideInstanceAttributes_does_not_modify_fieldSchema_if_no_ExampleValues_annotation_is_empty() { + when(exampleValuesAnnotation.value()).thenReturn(new ExampleValues.Example[]{}); + + createObjectUnderTest().overrideInstanceAttributes(fieldSchema, fieldScope, context); + + verifyNoInteractions(fieldSchema); + } + + @Test + void overrideInstanceAttributes_adds_examples_when_one_ExampleValue() { + when(context.getGeneratorConfig()).thenReturn(schemaGeneratorConfig); + when(schemaGeneratorConfig.getObjectMapper()).thenReturn(objectMapper); + + final ExampleValues.Example example = mock(ExampleValues.Example.class); + final String value = UUID.randomUUID().toString(); + final String description = UUID.randomUUID().toString(); + when(example.value()).thenReturn(value); + when(example.description()).thenReturn(description); + final ExampleValues.Example[] examples = {example}; + when(exampleValuesAnnotation.value()).thenReturn(examples); + + createObjectUnderTest().overrideInstanceAttributes(fieldSchema, fieldScope, context); + + final JsonNode examplesNode = fieldSchema.get("examples"); + assertThat(examplesNode, notNullValue()); + + assertThat(examplesNode.getNodeType(), equalTo(JsonNodeType.ARRAY)); + assertThat(examplesNode.size(), equalTo(1)); + final JsonNode firstExampleNode = examplesNode.get(0); + assertThat(firstExampleNode, notNullValue()); + assertThat(firstExampleNode.getNodeType(), equalTo(JsonNodeType.OBJECT)); + assertThat(firstExampleNode.get("example"), notNullValue()); + assertThat(firstExampleNode.get("example").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(firstExampleNode.get("example").textValue(), equalTo(value)); + assertThat(firstExampleNode.get("description"), notNullValue()); + assertThat(firstExampleNode.get("description").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(firstExampleNode.get("description").textValue(), equalTo(description)); + } + + @Test + void overrideInstanceAttributes_adds_examples_when_one_ExampleValue_with_no_description() { + when(context.getGeneratorConfig()).thenReturn(schemaGeneratorConfig); + when(schemaGeneratorConfig.getObjectMapper()).thenReturn(objectMapper); + + final ExampleValues.Example example = mock(ExampleValues.Example.class); + final String value = UUID.randomUUID().toString(); + final String description = UUID.randomUUID().toString(); + when(example.value()).thenReturn(value); + final ExampleValues.Example[] examples = {example}; + when(exampleValuesAnnotation.value()).thenReturn(examples); + + createObjectUnderTest().overrideInstanceAttributes(fieldSchema, fieldScope, context); + + final JsonNode examplesNode = fieldSchema.get("examples"); + assertThat(examplesNode, notNullValue()); + + assertThat(examplesNode.getNodeType(), equalTo(JsonNodeType.ARRAY)); + assertThat(examplesNode.size(), equalTo(1)); + final JsonNode firstExampleNode = examplesNode.get(0); + assertThat(firstExampleNode, notNullValue()); + assertThat(firstExampleNode.getNodeType(), equalTo(JsonNodeType.OBJECT)); + assertThat(firstExampleNode.get("example"), notNullValue()); + assertThat(firstExampleNode.get("example").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(firstExampleNode.get("example").textValue(), equalTo(value)); + assertThat(firstExampleNode.has("description"), equalTo(false)); + } + + @ParameterizedTest + @ValueSource(ints = {2, 3, 5}) + void overrideInstanceAttributes_adds_examples_when_multiple_ExampleValue(final int numberOfExamples) { + when(context.getGeneratorConfig()).thenReturn(schemaGeneratorConfig); + when(schemaGeneratorConfig.getObjectMapper()).thenReturn(objectMapper); + + final ExampleValues.Example[] examples = new ExampleValues.Example[numberOfExamples]; + for (int i = 0; i < numberOfExamples; i++) { + final ExampleValues.Example example = mock(ExampleValues.Example.class); + final String value = UUID.randomUUID().toString(); + final String description = UUID.randomUUID().toString(); + when(example.value()).thenReturn(value); + when(example.description()).thenReturn(description); + + examples[i] = example; + } + when(exampleValuesAnnotation.value()).thenReturn(examples); + + createObjectUnderTest().overrideInstanceAttributes(fieldSchema, fieldScope, context); + + final JsonNode examplesNode = fieldSchema.get("examples"); + assertThat(examplesNode, notNullValue()); + + assertThat(examplesNode.getNodeType(), equalTo(JsonNodeType.ARRAY)); + assertThat(examplesNode.size(), equalTo(numberOfExamples)); + + for (int i = 0; i < numberOfExamples; i++) { + final JsonNode exampleNode = examplesNode.get(0); + assertThat(exampleNode, notNullValue()); + assertThat(exampleNode.getNodeType(), equalTo(JsonNodeType.OBJECT)); + assertThat(exampleNode.get("example"), notNullValue()); + assertThat(exampleNode.get("example").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(exampleNode.get("example").textValue(), notNullValue()); + assertThat(exampleNode.get("description"), notNullValue()); + assertThat(exampleNode.get("description").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(exampleNode.get("description").textValue(), notNullValue()); + } + } + } +} \ No newline at end of file diff --git a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/JsonSchemaConverterIT.java b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/JsonSchemaConverterIT.java new file mode 100644 index 0000000000..fcd0bddebc --- /dev/null +++ b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/JsonSchemaConverterIT.java @@ -0,0 +1,120 @@ +package org.opensearch.dataprepper.schemas; + +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeType; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.github.victools.jsonschema.generator.Module; +import com.github.victools.jsonschema.generator.OptionPreset; +import com.github.victools.jsonschema.generator.SchemaVersion; +import com.github.victools.jsonschema.module.jackson.JacksonModule; +import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationModule; +import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationOption; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.model.annotations.ExampleValues; +import org.opensearch.dataprepper.model.annotations.UsesDataPrepperPlugin; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.plugin.ClasspathPluginProvider; +import org.opensearch.dataprepper.plugin.PluginProvider; +import org.opensearch.dataprepper.plugins.processor.aggregate.AggregateAction; + +import java.util.List; + +import static com.github.victools.jsonschema.module.jackson.JacksonOption.RESPECT_JSONPROPERTY_REQUIRED; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; + +public class JsonSchemaConverterIT { + static final String PROPERTIES_KEY = "properties"; + static final String ANY_OF_KEY = "anyOf"; + + private JsonSchemaConverter objectUnderTest; + + @BeforeEach + void setUp() { + final List modules = List.of( + new JacksonModule(RESPECT_JSONPROPERTY_REQUIRED), + new JakartaValidationModule(JakartaValidationOption.NOT_NULLABLE_FIELD_IS_REQUIRED, + JakartaValidationOption.INCLUDE_PATTERN_EXPRESSIONS) + ); + final PluginProvider pluginProvider = new ClasspathPluginProvider(); + objectUnderTest = new JsonSchemaConverter(modules, pluginProvider); + } + + @Test + void testSubTypes() throws JsonProcessingException { + final ObjectNode jsonSchemaNode = objectUnderTest.convertIntoJsonSchema( + SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON, TestConfig.class); + assertThat(jsonSchemaNode, instanceOf(ObjectNode.class)); + final JsonNode propertiesNode = jsonSchemaNode.at("/" + PROPERTIES_KEY); + assertThat(propertiesNode, instanceOf(ObjectNode.class)); + assertThat(propertiesNode.has("action"), is(true)); + final JsonNode actionNode = propertiesNode.at("/action"); + assertThat(actionNode.has(ANY_OF_KEY), is(true)); + final JsonNode anyOfNode = actionNode.at("/" + ANY_OF_KEY); + assertThat(anyOfNode, instanceOf(ArrayNode.class)); + anyOfNode.forEach(aggregateActionNode -> assertThat(aggregateActionNode.has(PROPERTIES_KEY), is(true))); + } + + @Test + void test_examples() throws JsonProcessingException { + final ObjectNode jsonSchemaNode = objectUnderTest.convertIntoJsonSchema( + SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON, TestConfig.class); + assertThat(jsonSchemaNode, instanceOf(ObjectNode.class)); + final JsonNode propertiesNode = jsonSchemaNode.at("/" + PROPERTIES_KEY); + assertThat(propertiesNode, instanceOf(ObjectNode.class)); + assertThat(propertiesNode.has("string_value_with_two_examples"), is(true)); + final JsonNode propertyNode = propertiesNode.at("/string_value_with_two_examples"); + assertThat(propertyNode.has("type"), equalTo(true)); + assertThat(propertyNode.get("type").getNodeType(), equalTo(JsonNodeType.STRING)); + + assertThat(propertyNode.has("examples"), equalTo(true)); + assertThat(propertyNode.get("examples").getNodeType(), equalTo(JsonNodeType.ARRAY)); + assertThat(propertyNode.get("examples").size(), equalTo(2)); + assertThat(propertyNode.get("examples").get(0), notNullValue()); + assertThat(propertyNode.get("examples").get(0).getNodeType(), equalTo(JsonNodeType.OBJECT)); + assertThat(propertyNode.get("examples").get(0).has("example"), equalTo(true)); + assertThat(propertyNode.get("examples").get(0).get("example").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(propertyNode.get("examples").get(0).get("example").textValue(), equalTo("some example value")); + assertThat(propertyNode.get("examples").get(0).has("description"), equalTo(false)); + + assertThat(propertyNode.get("examples").get(1), notNullValue()); + assertThat(propertyNode.get("examples").get(1).getNodeType(), equalTo(JsonNodeType.OBJECT)); + assertThat(propertyNode.get("examples").get(1).has("example"), equalTo(true)); + assertThat(propertyNode.get("examples").get(1).get("example").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(propertyNode.get("examples").get(1).get("example").textValue(), equalTo("second example value")); + assertThat(propertyNode.get("examples").get(1).has("description"), equalTo(true)); + assertThat(propertyNode.get("examples").get(1).get("description").getNodeType(), equalTo(JsonNodeType.STRING)); + assertThat(propertyNode.get("examples").get(1).get("description").textValue(), equalTo("This is the second value.")); + } + + @JsonClassDescription("test config") + static class TestConfig { + @JsonPropertyDescription("The aggregate action description") + @UsesDataPrepperPlugin(pluginType = AggregateAction.class) + private PluginModel action; + + public PluginModel getAction() { + return action; + } + + @JsonProperty("string_value_with_two_examples") + @ExampleValues({ + @ExampleValues.Example("some example value"), + @ExampleValues.Example(value = "second example value", description = "This is the second value.") + }) + private String stringValueWithTwoExamples; + + public String getStringValueWithTwoExamples() { + return stringValueWithTwoExamples; + } + } +} diff --git a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/JsonSchemaConverterTest.java b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/JsonSchemaConverterTest.java index 67cf0ac527..7642e93e90 100644 --- a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/JsonSchemaConverterTest.java +++ b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/JsonSchemaConverterTest.java @@ -4,12 +4,19 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.TextNode; import com.github.victools.jsonschema.generator.Module; import com.github.victools.jsonschema.generator.OptionPreset; import com.github.victools.jsonschema.generator.SchemaVersion; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; +import org.opensearch.dataprepper.model.event.EventKey; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.plugin.PluginProvider; import org.opensearch.dataprepper.schemas.module.CustomJacksonModule; import java.util.Collections; @@ -18,17 +25,22 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; +@ExtendWith(MockitoExtension.class) class JsonSchemaConverterTest { + @Mock + private PluginProvider pluginProvider; - public JsonSchemaConverter createObjectUnderTest(final List modules) { - return new JsonSchemaConverter(modules); + public JsonSchemaConverter createObjectUnderTest(final List modules, final PluginProvider pluginProvider) { + return new JsonSchemaConverter(modules, pluginProvider); } @Test void testConvertIntoJsonSchemaWithDefaultModules() throws JsonProcessingException { - final JsonSchemaConverter jsonSchemaConverter = createObjectUnderTest(Collections.emptyList()); + final JsonSchemaConverter jsonSchemaConverter = createObjectUnderTest( + Collections.emptyList(), pluginProvider); final ObjectNode jsonSchemaNode = jsonSchemaConverter.convertIntoJsonSchema( SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON, TestConfig.class); assertThat(jsonSchemaNode, instanceOf(ObjectNode.class)); @@ -44,7 +56,8 @@ void testConvertIntoJsonSchemaWithDefaultModules() throws JsonProcessingExceptio @Test void testConvertIntoJsonSchemaWithCustomJacksonModule() throws JsonProcessingException { final JsonSchemaConverter jsonSchemaConverter = createObjectUnderTest( - Collections.singletonList(new CustomJacksonModule())); + Collections.singletonList(new CustomJacksonModule()), + pluginProvider); final ObjectNode jsonSchemaNode = jsonSchemaConverter.convertIntoJsonSchema( SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON, TestConfig.class); assertThat(jsonSchemaNode, instanceOf(ObjectNode.class)); @@ -53,6 +66,33 @@ void testConvertIntoJsonSchemaWithCustomJacksonModule() throws JsonProcessingExc assertThat(propertiesNode, instanceOf(ObjectNode.class)); assertThat(propertiesNode.has("test_attribute_with_getter"), is(true)); assertThat(propertiesNode.has("custom_test_attribute"), is(true)); + final JsonNode dependentRequiredNode = jsonSchemaNode.at("/dependentRequired"); + assertThat(dependentRequiredNode, instanceOf(ObjectNode.class)); + assertThat(dependentRequiredNode.has("test_mutually_exclusive_attribute_a"), is(true)); + assertThat(dependentRequiredNode.at("/test_mutually_exclusive_attribute_a"), + instanceOf(ArrayNode.class)); + final ArrayNode dependentRequiredProperty1 = (ArrayNode) dependentRequiredNode.at( + "/test_mutually_exclusive_attribute_a"); + assertThat(dependentRequiredProperty1.size(), equalTo(1)); + assertThat(dependentRequiredProperty1.get(0), equalTo( + TextNode.valueOf("test_mutually_exclusive_attribute_b:[null, \"test_value\"]"))); + final ArrayNode dependentRequiredProperty2 = (ArrayNode) dependentRequiredNode.at( + "/test_dependent_required_property_with_default_allowed_values"); + assertThat(dependentRequiredProperty2.size(), equalTo(1)); + assertThat(dependentRequiredProperty2.get(0), equalTo( + TextNode.valueOf("test_mutually_exclusive_attribute_a"))); + } + + @Test + void testConvertIntoJsonSchemaWithEventKey() throws JsonProcessingException { + final JsonSchemaConverter jsonSchemaConverter = createObjectUnderTest(Collections.emptyList(), pluginProvider); + final ObjectNode jsonSchemaNode = jsonSchemaConverter.convertIntoJsonSchema( + SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON, TestConfig.class); + final JsonNode propertiesNode = jsonSchemaNode.at("/properties"); + assertThat(propertiesNode, instanceOf(ObjectNode.class)); + assertThat(propertiesNode.has("testAttributeEventKey"), is(equalTo(true))); + assertThat(propertiesNode.get("testAttributeEventKey"), is(notNullValue())); + assertThat(propertiesNode.get("testAttributeEventKey").get("type"), is(equalTo(TextNode.valueOf("string")))); } @JsonClassDescription("test config") @@ -65,8 +105,24 @@ static class TestConfig { @JsonProperty(defaultValue = "default_value") private String testAttributeWithDefaultValue; + @JsonProperty + @AlsoRequired(values = { + @AlsoRequired.Required(name="test_mutually_exclusive_attribute_b", allowedValues = {"null", "\"test_value\""}) + }) + private String testMutuallyExclusiveAttributeA; + + private String testMutuallyExclusiveAttributeB; + + @JsonProperty + @AlsoRequired(values = { + @AlsoRequired.Required(name="test_mutually_exclusive_attribute_a") + }) + private String testDependentRequiredPropertyWithDefaultAllowedValues; + public String getTestAttributeWithGetter() { return testAttributeWithGetter; } + + private EventKey testAttributeEventKey; } } \ No newline at end of file diff --git a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterIT.java b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterIT.java index 71e9bf5faa..d825a3472f 100644 --- a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterIT.java +++ b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterIT.java @@ -13,10 +13,8 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.reflections.Reflections; -import org.reflections.scanners.Scanners; -import org.reflections.util.ClasspathHelper; -import org.reflections.util.ConfigurationBuilder; +import org.opensearch.dataprepper.plugin.ClasspathPluginProvider; +import org.opensearch.dataprepper.plugin.PluginProvider; import java.util.List; import java.util.Map; @@ -46,11 +44,9 @@ void setUp() { new JakartaValidationModule(JakartaValidationOption.NOT_NULLABLE_FIELD_IS_REQUIRED, JakartaValidationOption.INCLUDE_PATTERN_EXPRESSIONS) ); - final Reflections reflections = new Reflections(new ConfigurationBuilder() - .setUrls(ClasspathHelper.forPackage(DEFAULT_PLUGINS_CLASSPATH)) - .setScanners(Scanners.TypesAnnotated, Scanners.SubTypes)); + final PluginProvider pluginProvider = new ClasspathPluginProvider(); objectUnderTest = new PluginConfigsJsonSchemaConverter( - reflections, new JsonSchemaConverter(modules), TEST_URL, TEST_BASE_URL); + pluginProvider, new JsonSchemaConverter(modules, pluginProvider), TEST_URL, TEST_BASE_URL); } @ParameterizedTest diff --git a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterTest.java b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterTest.java index 3d1c1b585a..39c5629e0c 100644 --- a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterTest.java +++ b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/PluginConfigsJsonSchemaConverterTest.java @@ -12,7 +12,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; -import org.reflections.Reflections; +import org.opensearch.dataprepper.plugin.PluginProvider; import java.util.Map; import java.util.Set; @@ -40,7 +40,7 @@ class PluginConfigsJsonSchemaConverterTest { private JsonSchemaConverter jsonSchemaConverter; @Mock - private Reflections reflections; + private PluginProvider pluginProvider; @InjectMocks private PluginConfigsJsonSchemaConverter objectUnderTest; @@ -67,7 +67,7 @@ void testPluginTypeNameToPluginTypeWithInValidInput() { @Test void testConvertPluginConfigsIntoJsonSchemasHappyPath() throws JsonProcessingException { - when(reflections.getTypesAnnotatedWith(eq(DataPrepperPlugin.class))).thenReturn(Set.of(TestPlugin.class)); + when(pluginProvider.findPluginClasses(eq(TestPluginType.class))).thenReturn(Set.of(TestPlugin.class)); final ObjectNode objectNode = OBJECT_MAPPER.createObjectNode(); when(jsonSchemaConverter.convertIntoJsonSchema( any(SchemaVersion.class), any(OptionPreset.class), eq(TestPluginConfig.class))).thenReturn(objectNode); @@ -84,7 +84,7 @@ void testConvertPluginConfigsIntoJsonSchemasHappyPath() throws JsonProcessingExc @Test void testConvertPluginConfigsIntoJsonSchemasWithError() throws JsonProcessingException { - when(reflections.getTypesAnnotatedWith(eq(DataPrepperPlugin.class))).thenReturn(Set.of(TestPlugin.class)); + when(pluginProvider.findPluginClasses(eq(TestPluginType.class))).thenReturn(Set.of(TestPlugin.class)); final JsonProcessingException jsonProcessingException = mock(JsonProcessingException.class); when(jsonSchemaConverter.convertIntoJsonSchema( any(SchemaVersion.class), any(OptionPreset.class), eq(TestPluginConfig.class))).thenThrow( @@ -96,7 +96,7 @@ void testConvertPluginConfigsIntoJsonSchemasWithError() throws JsonProcessingExc @DataPrepperPlugin( name = "test_plugin", pluginType = TestPluginType.class, pluginConfigurationType = TestPluginConfig.class) - static class TestPlugin { + static class TestPlugin extends TestPluginType { } diff --git a/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/module/DataPrepperJakartaValidationModuleTest.java b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/module/DataPrepperJakartaValidationModuleTest.java new file mode 100644 index 0000000000..281a3a9bfc --- /dev/null +++ b/data-prepper-plugin-schema/src/test/java/org/opensearch/dataprepper/schemas/module/DataPrepperJakartaValidationModuleTest.java @@ -0,0 +1,113 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.schemas.module; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.victools.jsonschema.generator.MemberScope; +import com.github.victools.jsonschema.module.jakarta.validation.JakartaValidationModule; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.junit.platform.commons.support.ReflectionSupport; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.UUID; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class DataPrepperJakartaValidationModuleTest { + + @Mock + private MemberScope memberScope; + + DataPrepperJakartaValidationModule createObjectUnderTest() { + return spy(new DataPrepperJakartaValidationModule()); + } + + @ParameterizedTest + @ValueSource(booleans = {true, false}) + void isRequired_returns_inner_if_no_JsonProperty_annotation(final boolean innerIsRequired) throws NoSuchMethodException { + final DataPrepperJakartaValidationModule objectUnderTest = createObjectUnderTest(); + + final boolean isNullable = !innerIsRequired; + ReflectionSupport.invokeMethod( + JakartaValidationModule.class.getDeclaredMethod("isNullable", MemberScope.class), + doReturn(isNullable).when((JakartaValidationModule) objectUnderTest), + memberScope); + + assertThat(objectUnderTest.isRequired(memberScope), equalTo(innerIsRequired)); + } + + @Nested + class WithJsonProperty { + private JsonProperty jsonPropertyAnnotation; + + @BeforeEach + void setUp() { + jsonPropertyAnnotation = mock(JsonProperty.class); + when(memberScope.getAnnotationConsideringFieldAndGetter(JsonProperty.class)) + .thenReturn(jsonPropertyAnnotation); + } + + @ParameterizedTest + @ValueSource(booleans = {true, false}) + void isRequired_returns_inner_if_JsonProperty_annotation_has_null_defaultValue(final boolean innerIsRequired) throws NoSuchMethodException { + final DataPrepperJakartaValidationModule objectUnderTest = createObjectUnderTest(); + + final boolean isNullable = !innerIsRequired; + ReflectionSupport.invokeMethod( + JakartaValidationModule.class.getDeclaredMethod("isNullable", MemberScope.class), + doReturn(isNullable).when((JakartaValidationModule) objectUnderTest), + memberScope); + + when(jsonPropertyAnnotation.defaultValue()).thenReturn(null); + + assertThat(objectUnderTest.isRequired(memberScope), equalTo(innerIsRequired)); + } + + @ParameterizedTest + @ValueSource(booleans = {true, false}) + void isRequired_returns_inner_if_JsonProperty_annotation_has_empty_defaultValue(final boolean innerIsRequired) throws NoSuchMethodException { + final DataPrepperJakartaValidationModule objectUnderTest = createObjectUnderTest(); + + final boolean isNullable = !innerIsRequired; + ReflectionSupport.invokeMethod( + JakartaValidationModule.class.getDeclaredMethod("isNullable", MemberScope.class), + doReturn(isNullable).when((JakartaValidationModule) objectUnderTest), + memberScope); + + when(jsonPropertyAnnotation.defaultValue()).thenReturn(""); + + assertThat(objectUnderTest.isRequired(memberScope), equalTo(innerIsRequired)); + } + + @Test + void isRequired_returns_false_if_JsonProperty_has_default_value() throws NoSuchMethodException { + final DataPrepperJakartaValidationModule objectUnderTest = createObjectUnderTest(); + + when(jsonPropertyAnnotation.defaultValue()).thenReturn(UUID.randomUUID().toString()); + + assertThat(createObjectUnderTest().isRequired(memberScope), equalTo(false)); + + ReflectionSupport.invokeMethod( + JakartaValidationModule.class.getDeclaredMethod("isNullable", MemberScope.class), + verify(objectUnderTest, never()), + memberScope); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessor.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessor.java index 544928c242..2b19e98516 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessor.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessor.java @@ -81,7 +81,9 @@ public AggregateProcessor(final AggregateProcessorConfig aggregateProcessorConfi pluginMetrics.gauge(CURRENT_AGGREGATE_GROUPS, aggregateGroupManager, AggregateGroupManager::getAllGroupsSize); if (aggregateProcessorConfig.getWhenCondition() != null && (!expressionEvaluator.isValidExpressionStatement(aggregateProcessorConfig.getWhenCondition()))) { - throw new InvalidPluginConfigurationException("aggregate_when {} is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax"); + throw new InvalidPluginConfigurationException( + String.format("aggregate_when \"%s\" is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", + aggregateProcessorConfig.getWhenCondition())); } } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorConfig.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorConfig.java index 40ed0f14d7..b9ea6ead84 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorConfig.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorConfig.java @@ -7,6 +7,8 @@ import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; +import org.opensearch.dataprepper.model.annotations.UsesDataPrepperPlugin; import org.opensearch.dataprepper.model.configuration.PluginModel; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonProperty; @@ -18,41 +20,47 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `aggregate` processor groups events based on the values of identification_keys. " + +@JsonClassDescription("The aggregate processor groups events based on the values of identification_keys. " + "Then, the processor performs an action on each group, helping reduce unnecessary log volume and " + "creating aggregated logs over time.") public class AggregateProcessorConfig { + static final String AGGREGATED_EVENTS_TAG_KEY = "aggregated_events_tag"; + static final int DEFAULT_GROUP_DURATION_SECONDS = 180; - static int DEFAULT_GROUP_DURATION_SECONDS = 180; - - @JsonPropertyDescription("An unordered list by which to group events. Events with the same values as these keys are put into the same group. If an event does not contain one of the identification_keys, then the value of that key is considered to be equal to null. At least one identification_key is required (for example, [\"sourceIp\", \"destinationIp\", \"port\"].") + @JsonPropertyDescription("An unordered list by which to group events. Events with the same values as these keys are put into the same group. " + + "If an event does not contain one of the identification_keys, then the value of that key is considered to be equal to null. " + + "At least one identification_key is required. And example configuration is [\"sourceIp\", \"destinationIp\", \"port\"].") @JsonProperty("identification_keys") @NotEmpty private List identificationKeys; - @JsonPropertyDescription("The amount of time that a group should exist before it is concluded automatically. Supports ISO_8601 notation strings (\"PT20.345S\", \"PT15M\", etc.) as well as simple notation for seconds (\"60s\") and milliseconds (\"1500ms\"). Default value is 180s.") - @JsonProperty("group_duration") - private Duration groupDuration = Duration.ofSeconds(DEFAULT_GROUP_DURATION_SECONDS); - @JsonPropertyDescription("The action to be performed on each group. One of the available aggregate actions must be provided.") @JsonProperty("action") @NotNull + @UsesDataPrepperPlugin(pluginType = AggregateAction.class) private PluginModel aggregateAction; - @JsonPropertyDescription("When local_mode is set to true, the aggregation is performed locally on each Data Prepper node instead of forwarding events to a specific node based on the identification_keys using a hash function. Default is false.") + @JsonPropertyDescription("The amount of time that a group should exist before it is concluded automatically. Supports ISO_8601 notation strings (\"PT20.345S\", \"PT15M\", etc.) as well as simple notation for seconds (\"60s\") and milliseconds (\"1500ms\"). Default value is 180s.") + @JsonProperty(value = "group_duration", defaultValue = DEFAULT_GROUP_DURATION_SECONDS + "s") + private Duration groupDuration = Duration.ofSeconds(DEFAULT_GROUP_DURATION_SECONDS); + + @JsonPropertyDescription("When local_mode is set to true, the aggregation is performed locally on each node instead of forwarding events to a specific node based on the identification_keys using a hash function. Default is false.") @JsonProperty("local_mode") @NotNull private Boolean localMode = false; - @JsonPropertyDescription("A boolean indicating if the unaggregated events should be forwarded to the next processor/sink in the chain.") + @JsonPropertyDescription("A boolean indicating if the unaggregated events should be forwarded to the next processor or sink in the chain.") @JsonProperty("output_unaggregated_events") + @AlsoRequired(values = { + @AlsoRequired.Required(name = AGGREGATED_EVENTS_TAG_KEY) + }) private Boolean outputUnaggregatedEvents = false; @JsonPropertyDescription("Tag to be used for aggregated events to distinguish aggregated events from unaggregated events.") - @JsonProperty("aggregated_events_tag") + @JsonProperty(AGGREGATED_EVENTS_TAG_KEY) private String aggregatedEventsTag; - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), such as '/some-key == \"test\"', that will be evaluated to determine whether the processor will be run on the event.") + @JsonPropertyDescription("A conditional expression, such as /some-key == \"test\", that will be evaluated to determine whether the processor will be run on the event.") @JsonProperty("aggregate_when") private String whenCondition; diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/AppendAggregateActionConfig.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/AppendAggregateActionConfig.java index 529ef0bde3..03067608cb 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/AppendAggregateActionConfig.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/AppendAggregateActionConfig.java @@ -7,9 +7,13 @@ import java.util.List; +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +@JsonPropertyOrder +@JsonClassDescription("Appends multiple events into a single event.") public class AppendAggregateActionConfig { @JsonProperty("keys_to_append") diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateAction.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateAction.java index c8fd772336..8b67ca64cd 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateAction.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateAction.java @@ -51,7 +51,7 @@ public class CountAggregateAction implements AggregateAction { public final String countKey; public final String startTimeKey; public final String endTimeKey; - public final String outputFormat; + public final OutputFormat outputFormat; private long startTimeNanos; private final String metricName; private final IdentificationKeysHasher uniqueKeysHasher; @@ -141,7 +141,7 @@ public AggregateActionOutput concludeGroup(final AggregateActionInput aggregateA Instant endTime = (Instant)groupState.get(endTimeKey); groupState.remove(endTimeKey); groupState.remove(UNIQUE_KEYS_SETKEY); - if (outputFormat.equals(OutputFormat.RAW.toString())) { + if (outputFormat == OutputFormat.RAW) { groupState.put(startTimeKey, startTime.atZone(ZoneId.of(ZoneId.systemDefault().toString())).format(DateTimeFormatter.ofPattern(DATE_FORMAT))); event = JacksonEvent.builder() .withEventType(EVENT_TYPE) diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfig.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfig.java index a0325ee3a9..7097e1c85e 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfig.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfig.java @@ -5,42 +5,49 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; -import java.util.HashSet; import java.util.List; -import java.util.Set; + +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +@JsonPropertyOrder +@JsonClassDescription("The count action counts events that belong to the same group and " + + "generates a new event with values of the identification_keys and the count, which indicates the number of new events.") public class CountAggregateActionConfig { static final String SUM_METRIC_NAME = "count"; public static final String DEFAULT_COUNT_KEY = "aggr._count"; public static final String DEFAULT_START_TIME_KEY = "aggr._start_time"; public static final String DEFAULT_END_TIME_KEY = "aggr._end_time"; - public static final Set validOutputFormats = new HashSet<>(Set.of(OutputFormat.OTEL_METRICS.toString(), OutputFormat.RAW.toString())); - @JsonPropertyDescription("Key used for storing the count. Default name is aggr._count.") - @JsonProperty("count_key") - String countKey = DEFAULT_COUNT_KEY; + @JsonPropertyDescription("Format of the aggregated event. Specifying otel_metrics outputs aggregate events in OTel metrics SUM type with count as value. " + + "Specifying raw outputs aggregate events as with the count_key field as a count value and includes the start_time_key and end_time_key keys.") + @JsonProperty(value = "output_format", defaultValue = "otel_metrics") + OutputFormat outputFormat = OutputFormat.OTEL_METRICS; - @JsonPropertyDescription("Metric name to be used when otel format is used.") - @JsonProperty("metric_name") + @JsonPropertyDescription("Metric name to be used when the OTel metrics format is used. The default value is count.") + @JsonProperty(value = "metric_name", defaultValue = SUM_METRIC_NAME) String metricName = SUM_METRIC_NAME; - @JsonPropertyDescription("List of unique keys to count.") - @JsonProperty("unique_keys") - List uniqueKeys = null; + @JsonPropertyDescription("The key in the aggregate event that will have the count value. " + + "This is the count of events in the aggregation. Default name is aggr._count.") + @JsonProperty(value = "count_key", defaultValue = DEFAULT_COUNT_KEY) + String countKey = DEFAULT_COUNT_KEY; - @JsonPropertyDescription("Key used for storing the start time. Default name is aggr._start_time.") - @JsonProperty("start_time_key") + @JsonPropertyDescription("The key in the aggregate event that will have the start time of the aggregation. " + + "Default name is aggr._start_time.") + @JsonProperty(value = "start_time_key", defaultValue = DEFAULT_START_TIME_KEY) String startTimeKey = DEFAULT_START_TIME_KEY; - @JsonPropertyDescription("Key used for storing the end time. Default name is aggr._end_time.") - @JsonProperty("end_time_key") + @JsonPropertyDescription("The key in the aggregate event that will have the end time of the aggregation. " + + "Default name is aggr._end_time.") + @JsonProperty(value = "end_time_key", defaultValue = DEFAULT_END_TIME_KEY) String endTimeKey = DEFAULT_END_TIME_KEY; - @JsonPropertyDescription("Format of the aggregated event. otel_metrics is the default output format which outputs in OTel metrics SUM type with count as value. Other options is - raw - which generates a JSON object with the count_key field as a count value and the start_time_key field with aggregation start time as value.") - @JsonProperty("output_format") - String outputFormat = OutputFormat.OTEL_METRICS.toString(); + @JsonPropertyDescription("List of unique keys to count.") + @JsonProperty("unique_keys") + List uniqueKeys = null; public String getMetricName() { return metricName; @@ -62,10 +69,7 @@ public String getStartTimeKey() { return startTimeKey; } - public String getOutputFormat() { - if (!validOutputFormats.contains(outputFormat)) { - throw new IllegalArgumentException("Unknown output format " + outputFormat); - } + public OutputFormat getOutputFormat() { return outputFormat; } } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateAction.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateAction.java index 0bded67d75..22cfa7efb7 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateAction.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateAction.java @@ -49,7 +49,7 @@ public class HistogramAggregateAction implements AggregateAction { private final String bucketsKey; private final String startTimeKey; private final String endTimeKey; - private final String outputFormat; + private final OutputFormat outputFormat; private final String sumKey; private final String maxKey; private final String minKey; @@ -217,7 +217,7 @@ public AggregateActionOutput concludeGroup(final AggregateActionInput aggregateA List exemplarList = new ArrayList<>(); exemplarList.add(createExemplar("min", minEvent, minValue)); exemplarList.add(createExemplar("max", maxEvent, maxValue)); - if (outputFormat.equals(OutputFormat.RAW.toString())) { + if (outputFormat == OutputFormat.RAW) { groupState.put(histogramKey, key); groupState.put(durationKey, endTimeNanos-startTimeNanos); groupState.put(bucketsKey, Arrays.copyOfRange(this.buckets, 1, this.buckets.length-1)); diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfig.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfig.java index 6d89a1bd8f..af18dd6162 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfig.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfig.java @@ -5,13 +5,21 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; -import java.util.Set; import java.util.List; -import java.util.HashSet; + +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.NotNull; +@JsonPropertyOrder +@JsonClassDescription("The histogram action aggregates events belonging to the same " + + "group and generates a new event with values of the identification_keys " + + "and histogram of the aggregated events based on a configured key. " + + "The histogram contains the number of events, sum, buckets, bucket counts, and optionally " + + "min and max of the values corresponding to the key. The action drops all events " + + "that make up the combined event.") public class HistogramAggregateActionConfig { public static final String HISTOGRAM_METRIC_NAME = "histogram"; public static final String DEFAULT_GENERATED_KEY_PREFIX = "aggr._"; @@ -24,24 +32,27 @@ public class HistogramAggregateActionConfig { public static final String START_TIME_KEY = "startTime"; public static final String END_TIME_KEY = "endTime"; public static final String DURATION_KEY = "duration"; - public static final Set validOutputFormats = new HashSet<>(Set.of(OutputFormat.OTEL_METRICS.toString(), OutputFormat.RAW.toString())); @JsonPropertyDescription("Name of the field in the events the histogram generates.") @JsonProperty("key") @NotNull String key; + @JsonPropertyDescription("Format of the aggregated event. otel_metrics is the default output format which outputs in OTel metrics SUM type with count as value. Other options is - raw - which generates a JSON object with the count_key field as a count value and the start_time_key field with aggregation start time as value.") + @JsonProperty(value = "output_format", defaultValue = "otel_metrics") + OutputFormat outputFormat = OutputFormat.OTEL_METRICS; + @JsonPropertyDescription("The name of units for the values in the key. For example, bytes, traces etc") @JsonProperty("units") @NotNull String units; @JsonPropertyDescription("Metric name to be used when otel format is used.") - @JsonProperty("metric_name") + @JsonProperty(value = "metric_name", defaultValue = HISTOGRAM_METRIC_NAME) String metricName = HISTOGRAM_METRIC_NAME; @JsonPropertyDescription("Key prefix used by all the fields created in the aggregated event. Having a prefix ensures that the names of the histogram event do not conflict with the field names in the event.") - @JsonProperty("generated_key_prefix") + @JsonProperty(value = "generated_key_prefix", defaultValue = DEFAULT_GENERATED_KEY_PREFIX) String generatedKeyPrefix = DEFAULT_GENERATED_KEY_PREFIX; @JsonPropertyDescription("A list of buckets (values of type double) indicating the buckets in the histogram.") @@ -49,10 +60,6 @@ public class HistogramAggregateActionConfig { @NotNull List buckets; - @JsonPropertyDescription("Format of the aggregated event. otel_metrics is the default output format which outputs in OTel metrics SUM type with count as value. Other options is - raw - which generates a JSON object with the count_key field as a count value and the start_time_key field with aggregation start time as value.") - @JsonProperty("output_format") - String outputFormat = OutputFormat.OTEL_METRICS.toString(); - @JsonPropertyDescription("A Boolean value indicating whether the histogram should include the min and max of the values in the aggregation.") @JsonProperty("record_minmax") boolean recordMinMax = false; @@ -120,10 +127,7 @@ public List getBuckets() { return buckets; } - public String getOutputFormat() { - if (!validOutputFormats.contains(outputFormat)) { - throw new IllegalArgumentException("Unknown output format " + outputFormat); - } + public OutputFormat getOutputFormat() { return outputFormat; } } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormat.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormat.java index d465355e4b..1fb77bd385 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormat.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormat.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import java.util.Arrays; import java.util.Map; @@ -37,4 +38,8 @@ static OutputFormat fromOptionValue(final String option) { return ACTIONS_MAP.get(option.toLowerCase()); } + @JsonValue + public String getOptionValue() { + return name; + } } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PercentSamplerAggregateActionConfig.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PercentSamplerAggregateActionConfig.java index 0a17e37c43..51d68a32b1 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PercentSamplerAggregateActionConfig.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PercentSamplerAggregateActionConfig.java @@ -5,14 +5,18 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.NotNull; -import com.fasterxml.jackson.annotation.JsonPropertyDescription; import jakarta.validation.constraints.AssertTrue; +@JsonPropertyOrder +@JsonClassDescription("The percent_sampler action controls the number of events aggregated based " + + "on a percentage of events. The action drops any events not included in the percentage.") public class PercentSamplerAggregateActionConfig { - @JsonPropertyDescription("The percentage of events to be processed during a one second interval. Must be greater than 0.0 and less than 100.0") + @JsonPropertyDescription("The percentage of events to be processed during a one second interval. Must be greater than 0.0 and less than 100.0.") @JsonProperty("percent") @NotNull private double percent; diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PutAllAggregateAction.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PutAllAggregateAction.java index 0f96584bd5..78debabb35 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PutAllAggregateAction.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/PutAllAggregateAction.java @@ -5,6 +5,8 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.JacksonEvent; @@ -22,7 +24,7 @@ * most recently handled Event. * @since 1.3 */ -@DataPrepperPlugin(name = "put_all", pluginType = AggregateAction.class) +@DataPrepperPlugin(name = "put_all", pluginType = AggregateAction.class, pluginConfigurationType = PutAllAggregateAction.PutAllAggregateActionConfig.class) public class PutAllAggregateAction implements AggregateAction { static final String EVENT_TYPE = "event"; @@ -43,4 +45,10 @@ public AggregateActionOutput concludeGroup(final AggregateActionInput aggregateA return new AggregateActionOutput(List.of(event)); } + + @JsonPropertyOrder + @JsonClassDescription("The put_all action combines events belonging to the same group by overwriting existing keys and adding new keys, similarly to the Java `Map.putAll`. " + + "The action drops all events that make up the combined event.") + static class PutAllAggregateActionConfig { + } } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateAction.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateAction.java index ecdb1b4438..3ea0d0b8af 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateAction.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateAction.java @@ -22,7 +22,7 @@ @DataPrepperPlugin(name = "rate_limiter", pluginType = AggregateAction.class, pluginConfigurationType = RateLimiterAggregateActionConfig.class) public class RateLimiterAggregateAction implements AggregateAction { private final RateLimiter rateLimiter; - private final String rateLimiterMode; + private final RateLimiterMode rateLimiterMode; @DataPrepperPluginConstructor public RateLimiterAggregateAction(final RateLimiterAggregateActionConfig ratelimiterAggregateActionConfig) { @@ -33,7 +33,7 @@ public RateLimiterAggregateAction(final RateLimiterAggregateActionConfig ratelim @Override public AggregateActionResponse handleEvent(final Event event, final AggregateActionInput aggregateActionInput) { - if (rateLimiterMode.equals(RateLimiterMode.DROP.toString())) { + if (rateLimiterMode == RateLimiterMode.DROP) { if (!rateLimiter.tryAcquire()) { return AggregateActionResponse.nullEventResponse(); } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfig.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfig.java index 158f3b1ac6..32c02d687c 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfig.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfig.java @@ -5,32 +5,32 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; -import java.util.Set; -import java.util.HashSet; +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.NotNull; +@JsonPropertyOrder +@JsonClassDescription("The rate_limiter action controls the number of events aggregated per second. " + + "By default, rate_limiter blocks the aggregate processor from running if it receives more events than the configured number allowed. " + + "You can overwrite the number events that triggers the rate_limited by using the when_exceeds configuration option.") public class RateLimiterAggregateActionConfig { - public static final Set validRateLimiterModes = new HashSet<>(Set.of(RateLimiterMode.BLOCK.toString(), RateLimiterMode.DROP.toString())); - @JsonPropertyDescription("The number of events allowed per second.") @JsonProperty("events_per_second") @NotNull int eventsPerSecond; - @JsonPropertyDescription("Indicates what action the rate_limiter takes when the number of events received is greater than the number of events allowed per second. Default value is block, which blocks the processor from running after the maximum number of events allowed per second is reached until the next second. Alternatively, the drop option drops the excess events received in that second. Default is block") - @JsonProperty("when_exceeds") - String whenExceedsMode = RateLimiterMode.BLOCK.toString(); + @JsonPropertyDescription("Indicates what action the rate_limiter takes when the number of events received is greater than the number of events allowed per second. " + + "Default value is block, which blocks the processor from running after the maximum number of events allowed per second is reached until the next second. Alternatively, the drop option drops the excess events received in that second. Default is block") + @JsonProperty(value = "when_exceeds", defaultValue = "block") + RateLimiterMode whenExceedsMode = RateLimiterMode.BLOCK; public int getEventsPerSecond() { return eventsPerSecond; } - public String getWhenExceeds() { - if (!validRateLimiterModes.contains(whenExceedsMode)) { - throw new IllegalArgumentException("Unknown rate limiter mode " + whenExceedsMode); - } + public RateLimiterMode getWhenExceeds() { return whenExceedsMode; } } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterMode.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterMode.java index bf7e5bba76..dd12d71de2 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterMode.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterMode.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import java.util.Arrays; import java.util.Map; @@ -37,4 +38,9 @@ static RateLimiterMode fromOptionValue(final String option) { return ACTIONS_MAP.get(option.toLowerCase()); } + @JsonValue + public String getOptionValue() { + return name; + } + } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RemoveDuplicatesAggregateAction.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RemoveDuplicatesAggregateAction.java index 3d364eb0f2..7fc98d0bf8 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RemoveDuplicatesAggregateAction.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RemoveDuplicatesAggregateAction.java @@ -5,6 +5,8 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.plugins.processor.aggregate.AggregateAction; @@ -17,7 +19,8 @@ * that have a non-empty groupState associated with them * @since 1.3 */ -@DataPrepperPlugin(name = "remove_duplicates", pluginType = AggregateAction.class) +@DataPrepperPlugin(name = "remove_duplicates", pluginType = AggregateAction.class, + pluginConfigurationType = RemoveDuplicatesAggregateAction.RemoveDuplicatesAggregateActionConfig.class) public class RemoveDuplicatesAggregateAction implements AggregateAction { static final String GROUP_STATE_HAS_EVENT = "GROUP_STATE_HAS_EVENT"; @@ -31,4 +34,9 @@ public AggregateActionResponse handleEvent(final Event event, final AggregateAct return AggregateActionResponse.nullEventResponse(); } + + @JsonPropertyOrder + @JsonClassDescription("The remove_duplicates action processes the first event for a group immediately and drops any events that duplicate the first event from the source.") + static class RemoveDuplicatesAggregateActionConfig { + } } diff --git a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/TailSamplerAggregateActionConfig.java b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/TailSamplerAggregateActionConfig.java index 85ce0b1135..1c5ad1c393 100644 --- a/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/TailSamplerAggregateActionConfig.java +++ b/data-prepper-plugins/aggregate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/TailSamplerAggregateActionConfig.java @@ -5,25 +5,29 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.AssertTrue; import java.time.Duration; +@JsonPropertyOrder +@JsonClassDescription("The tail_sampler action samples OpenTelemetry traces after collecting spans for a trace.") public class TailSamplerAggregateActionConfig { @JsonPropertyDescription("Period to wait before considering that a trace event is complete") @JsonProperty("wait_period") @NotNull private Duration waitPeriod; - @JsonPropertyDescription("Percent value to use for sampling non error events. 0.0 < percent < 100.0") + @JsonPropertyDescription("Percent value to use for sampling non error events. Must be greater than 0.0 and less than 100.0") @JsonProperty("percent") @NotNull private Integer percent; - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), such as '/some-key == \"test\"', that will be evaluated to determine whether the event is an error event or not") + @JsonPropertyDescription("A conditional expression, such as '/some-key == \"test\"', that will be evaluated to determine whether the event is an error event or not") @JsonProperty("condition") private String condition; diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorIT.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorIT.java index 46ec0a996e..a7608decec 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorIT.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/AggregateProcessorIT.java @@ -297,7 +297,7 @@ void aggregateWithPercentSamplerAction(double testPercent) throws InterruptedExc void aggregateWithRateLimiterAction() throws InterruptedException { final int eventsPerSecond = 500; lenient().when(rateLimiterAggregateActionConfig.getEventsPerSecond()).thenReturn(eventsPerSecond); - lenient().when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.DROP.toString()); + lenient().when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.DROP); aggregateAction = new RateLimiterAggregateAction(rateLimiterAggregateActionConfig); when(pluginFactory.loadPlugin(eq(AggregateAction.class), any(PluginSetting.class))) @@ -367,7 +367,7 @@ void aggregateWithRateLimiterActionNoDrops() throws InterruptedException { @RepeatedTest(value = 2) void aggregateWithCountAggregateAction() throws InterruptedException, NoSuchFieldException, IllegalAccessException { CountAggregateActionConfig countAggregateActionConfig = new CountAggregateActionConfig(); - setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW.toString()); + setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW); aggregateAction = new CountAggregateAction(countAggregateActionConfig); when(pluginFactory.loadPlugin(eq(AggregateAction.class), any(PluginSetting.class))) .thenReturn(aggregateAction); @@ -404,7 +404,7 @@ void aggregateWithCountAggregateAction() throws InterruptedException, NoSuchFiel @RepeatedTest(value = 2) void aggregateWithCountAggregateActionWithCondition() throws InterruptedException, NoSuchFieldException, IllegalAccessException { CountAggregateActionConfig countAggregateActionConfig = new CountAggregateActionConfig(); - setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW.toString()); + setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW); aggregateAction = new CountAggregateAction(countAggregateActionConfig); when(pluginFactory.loadPlugin(eq(AggregateAction.class), any(PluginSetting.class))) .thenReturn(aggregateAction); @@ -454,7 +454,7 @@ void aggregateWithCountAggregateActionWithUnaggregatedEvents() throws Interrupte String tag = UUID.randomUUID().toString(); when(aggregateProcessorConfig.getAggregatedEventsTag()).thenReturn(tag); CountAggregateActionConfig countAggregateActionConfig = new CountAggregateActionConfig(); - setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW.toString()); + setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW); aggregateAction = new CountAggregateAction(countAggregateActionConfig); when(pluginFactory.loadPlugin(eq(AggregateAction.class), any(PluginSetting.class))) .thenReturn(aggregateAction); @@ -496,7 +496,7 @@ void aggregateWithCountAggregateActionWithUnaggregatedEvents() throws Interrupte void aggregateWithHistogramAggregateAction() throws InterruptedException, NoSuchFieldException, IllegalAccessException { HistogramAggregateActionConfig histogramAggregateActionConfig = new HistogramAggregateActionConfig(); - setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "outputFormat", OutputFormat.RAW.toString()); + setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "outputFormat", OutputFormat.RAW); final String testKey = RandomStringUtils.randomAlphabetic(5); setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "key", testKey); final String testKeyPrefix = RandomStringUtils.randomAlphabetic(4)+"_"; diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfigTests.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfigTests.java index 1975918e37..3581c27347 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfigTests.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionConfigTests.java @@ -5,7 +5,6 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; -import static org.junit.jupiter.api.Assertions.assertThrows; import static org.opensearch.dataprepper.test.helper.ReflectivelySetField.setField; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; @@ -39,7 +38,7 @@ void setup() { void testDefault() { assertThat(countAggregateActionConfig.getCountKey(), equalTo(DEFAULT_COUNT_KEY)); assertThat(countAggregateActionConfig.getStartTimeKey(), equalTo(DEFAULT_START_TIME_KEY)); - assertThat(countAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS.toString())); + assertThat(countAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS)); assertThat(countAggregateActionConfig.getMetricName(), equalTo(CountAggregateActionConfig.SUM_METRIC_NAME)); assertThat(countAggregateActionConfig.getUniqueKeys(), equalTo(null)); } @@ -52,9 +51,9 @@ void testValidConfig() throws NoSuchFieldException, IllegalAccessException { final String testStartTimeKey = UUID.randomUUID().toString(); setField(CountAggregateActionConfig.class, countAggregateActionConfig, "startTimeKey", testStartTimeKey); assertThat(countAggregateActionConfig.getStartTimeKey(), equalTo(testStartTimeKey)); - final String testOutputFormat = OutputFormat.OTEL_METRICS.toString(); + final OutputFormat testOutputFormat = OutputFormat.OTEL_METRICS; setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", testOutputFormat); - assertThat(countAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS.toString())); + assertThat(countAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS)); final String testName = UUID.randomUUID().toString(); setField(CountAggregateActionConfig.class, countAggregateActionConfig, "metricName", testName); assertThat(countAggregateActionConfig.getMetricName(), equalTo(testName)); @@ -64,10 +63,4 @@ void testValidConfig() throws NoSuchFieldException, IllegalAccessException { setField(CountAggregateActionConfig.class, countAggregateActionConfig, "uniqueKeys", uniqueKeys); assertThat(countAggregateActionConfig.getUniqueKeys(), equalTo(uniqueKeys)); } - - @Test - void testInvalidConfig() throws NoSuchFieldException, IllegalAccessException { - setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", UUID.randomUUID().toString()); - assertThrows(IllegalArgumentException.class, () -> countAggregateActionConfig.getOutputFormat()); - } } diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionTest.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionTest.java index af81ca001f..c9ed55797b 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionTest.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/CountAggregateActionTest.java @@ -52,7 +52,7 @@ private AggregateAction createObjectUnderTest(CountAggregateActionConfig config) void testCountAggregate(int testCount) throws NoSuchFieldException, IllegalAccessException { final String testName = UUID.randomUUID().toString(); CountAggregateActionConfig countAggregateActionConfig = new CountAggregateActionConfig(); - setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW.toString()); + setField(CountAggregateActionConfig.class, countAggregateActionConfig, "outputFormat", OutputFormat.RAW); countAggregateAction = createObjectUnderTest(countAggregateActionConfig); final String key = UUID.randomUUID().toString(); final String value = UUID.randomUUID().toString(); @@ -160,7 +160,7 @@ void testCountAggregateOTelFormatWithStartAndEndTimesInTheEvent(int testCount) { String endTimeKey = UUID.randomUUID().toString(); when(mockConfig.getStartTimeKey()).thenReturn(startTimeKey); when(mockConfig.getEndTimeKey()).thenReturn(endTimeKey); - when(mockConfig.getOutputFormat()).thenReturn(OutputFormat.OTEL_METRICS.toString()); + when(mockConfig.getOutputFormat()).thenReturn(OutputFormat.OTEL_METRICS); countAggregateAction = createObjectUnderTest(mockConfig); final String key1 = "key-"+UUID.randomUUID().toString(); final String value1 = UUID.randomUUID().toString(); diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfigTests.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfigTests.java index 60ba8dc202..de0be19bf2 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfigTests.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionConfigTests.java @@ -42,7 +42,7 @@ void setup() { void testDefault() { assertThat(histogramAggregateActionConfig.getGeneratedKeyPrefix(), equalTo(DEFAULT_GENERATED_KEY_PREFIX)); assertThat(histogramAggregateActionConfig.getRecordMinMax(), equalTo(false)); - assertThat(histogramAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS.toString())); + assertThat(histogramAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS)); assertThat(histogramAggregateActionConfig.getMetricName(), equalTo(HistogramAggregateActionConfig.HISTOGRAM_METRIC_NAME)); } @@ -53,9 +53,9 @@ void testValidConfig() throws NoSuchFieldException, IllegalAccessException { assertThat(histogramAggregateActionConfig.getGeneratedKeyPrefix(), equalTo(testGeneratedKeyPrefix)); setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "recordMinMax", true); assertThat(histogramAggregateActionConfig.getRecordMinMax(), equalTo(true)); - final String testOutputFormat = OutputFormat.OTEL_METRICS.toString(); + final OutputFormat testOutputFormat = OutputFormat.OTEL_METRICS; setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "outputFormat", testOutputFormat); - assertThat(histogramAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS.toString())); + assertThat(histogramAggregateActionConfig.getOutputFormat(), equalTo(OutputFormat.OTEL_METRICS)); final String testKey = RandomStringUtils.randomAlphabetic(10); setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "key", testKey); assertThat(histogramAggregateActionConfig.getKey(), equalTo(testKey)); @@ -114,12 +114,6 @@ void testValidConfig() throws NoSuchFieldException, IllegalAccessException { assertThat(histogramAggregateActionConfig.getMetricName(), equalTo(testName)); } - @Test - void testInvalidOutputFormatConfig() throws NoSuchFieldException, IllegalAccessException { - setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "outputFormat", RandomStringUtils.randomAlphabetic(10)); - assertThrows(IllegalArgumentException.class, () -> histogramAggregateActionConfig.getOutputFormat()); - } - @Test void testInvalidBucketsConfig() throws NoSuchFieldException, IllegalAccessException { setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "buckets", new ArrayList()); diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionTests.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionTests.java index 27e8f8d801..facd090a64 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionTests.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/HistogramAggregateActionTests.java @@ -61,7 +61,7 @@ private AggregateAction createObjectUnderTest() { @ParameterizedTest @ValueSource(ints = {10, 20, 50, 100}) void testHistogramAggregate(final int testCount) throws NoSuchFieldException, IllegalAccessException { - setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "outputFormat", OutputFormat.RAW.toString()); + setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "outputFormat", OutputFormat.RAW); final String testKeyPrefix = RandomStringUtils.randomAlphabetic(5)+"_"; setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "generatedKeyPrefix", testKeyPrefix); setField(HistogramAggregateActionConfig.class, histogramAggregateActionConfig, "units", "ms"); @@ -255,7 +255,7 @@ void testHistogramAggregateOTelFormatWithStartAndEndTimesInTheEvent(final int te when(histogramAggregateActionConfig.getEndTimeKey()).thenReturn(endTimeKey); final String testName = UUID.randomUUID().toString(); when(histogramAggregateActionConfig.getMetricName()).thenReturn(testName); - when(histogramAggregateActionConfig.getOutputFormat()).thenReturn(OutputFormat.OTEL_METRICS.toString()); + when(histogramAggregateActionConfig.getOutputFormat()).thenReturn(OutputFormat.OTEL_METRICS); String keyPrefix = UUID.randomUUID().toString(); final String testUnits = "ms"; when(histogramAggregateActionConfig.getUnits()).thenReturn(testUnits); @@ -381,7 +381,7 @@ void testHistogramAggregateOTelFormat_with_startTime_before_currentTime_and_all_ when(histogramAggregateActionConfig.getEndTimeKey()).thenReturn(endTimeKey); final String testName = UUID.randomUUID().toString(); when(histogramAggregateActionConfig.getMetricName()).thenReturn(testName); - when(histogramAggregateActionConfig.getOutputFormat()).thenReturn(OutputFormat.OTEL_METRICS.toString()); + when(histogramAggregateActionConfig.getOutputFormat()).thenReturn(OutputFormat.OTEL_METRICS); final String testUnits = "ms"; when(histogramAggregateActionConfig.getUnits()).thenReturn(testUnits); when(histogramAggregateActionConfig.getRecordMinMax()).thenReturn(true); diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormatTest.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormatTest.java index 9adaf228f3..53615a563e 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormatTest.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/OutputFormatTest.java @@ -5,15 +5,25 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; +import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; import org.junit.jupiter.params.provider.EnumSource; +import java.util.stream.Stream; + +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.emptyString; +import static org.junit.jupiter.params.provider.Arguments.arguments; public class OutputFormatTest { - @ParameterizedTest @EnumSource(OutputFormat.class) void fromOptionValue(final OutputFormat value) { @@ -21,4 +31,32 @@ void fromOptionValue(final OutputFormat value) { assertThat(value, instanceOf(OutputFormat.class)); } + @ParameterizedTest + @ArgumentsSource(OutputFormatToKnownName.class) + void fromOptionValue_returns_expected_value(final OutputFormat outputFormat, final String knownString) { + assertThat(OutputFormat.fromOptionValue(knownString), equalTo(outputFormat)); + } + + @ParameterizedTest + @EnumSource(OutputFormat.class) + void getOptionValue_returns_non_empty_string_for_all_types(final OutputFormat outputFormat) { + assertThat(outputFormat.getOptionValue(), notNullValue()); + assertThat(outputFormat.getOptionValue(), not(emptyString())); + } + + @ParameterizedTest + @ArgumentsSource(OutputFormatToKnownName.class) + void getOptionValue_returns_expected_name(final OutputFormat outputFormat, final String expectedString) { + assertThat(outputFormat.getOptionValue(), equalTo(expectedString)); + } + + static class OutputFormatToKnownName implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(OutputFormat.OTEL_METRICS, "otel_metrics"), + arguments(OutputFormat.RAW, "raw") + ); + } + } } diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfigTests.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfigTests.java index e54b4a230d..5796d48609 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfigTests.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionConfigTests.java @@ -8,7 +8,6 @@ import static org.opensearch.dataprepper.test.helper.ReflectivelySetField.setField; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; -import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,7 +15,6 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; @ExtendWith(MockitoExtension.class) public class RateLimiterAggregateActionConfigTests { @@ -33,21 +31,15 @@ void setup() { @Test void testDefault() { - assertThat(rateLimiterAggregateActionConfig.getWhenExceeds(), equalTo(RateLimiterMode.BLOCK.toString())); - } - - @Test - void testInvalidConfig() throws NoSuchFieldException, IllegalAccessException { - setField(RateLimiterAggregateActionConfig.class, rateLimiterAggregateActionConfig, "whenExceedsMode", RandomStringUtils.randomAlphabetic(4)); - assertThrows(IllegalArgumentException.class, () -> rateLimiterAggregateActionConfig.getWhenExceeds()); + assertThat(rateLimiterAggregateActionConfig.getWhenExceeds(), equalTo(RateLimiterMode.BLOCK)); } @Test void testValidConfig() throws NoSuchFieldException, IllegalAccessException { final int testEventsPerSecond = ThreadLocalRandom.current().nextInt(); setField(RateLimiterAggregateActionConfig.class, rateLimiterAggregateActionConfig, "eventsPerSecond", testEventsPerSecond); - setField(RateLimiterAggregateActionConfig.class, rateLimiterAggregateActionConfig, "whenExceedsMode", "drop"); + setField(RateLimiterAggregateActionConfig.class, rateLimiterAggregateActionConfig, "whenExceedsMode", RateLimiterMode.fromOptionValue("drop")); assertThat(rateLimiterAggregateActionConfig.getEventsPerSecond(), equalTo(testEventsPerSecond)); - assertThat(rateLimiterAggregateActionConfig.getWhenExceeds(), equalTo(RateLimiterMode.DROP.toString())); + assertThat(rateLimiterAggregateActionConfig.getWhenExceeds(), equalTo(RateLimiterMode.DROP)); } } diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionTests.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionTests.java index 202452bfce..b642a983f4 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionTests.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterAggregateActionTests.java @@ -46,7 +46,7 @@ private AggregateAction createObjectUnderTest(RateLimiterAggregateActionConfig c @ValueSource(ints = {1, 2, 100, 1000}) void testRateLimiterAggregateSmoothTraffic(int testEventsPerSecond) throws InterruptedException { when(rateLimiterAggregateActionConfig.getEventsPerSecond()).thenReturn(testEventsPerSecond); - when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.DROP.toString()); + when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.DROP); rateLimiterAggregateAction = createObjectUnderTest(rateLimiterAggregateActionConfig); final String key = UUID.randomUUID().toString(); final String value = UUID.randomUUID().toString(); @@ -72,7 +72,7 @@ void testRateLimiterAggregateSmoothTraffic(int testEventsPerSecond) throws Inter @ValueSource(ints = {100, 200, 500, 1000}) void testRateLimiterInDropMode(int testEventsPerSecond) throws InterruptedException { when(rateLimiterAggregateActionConfig.getEventsPerSecond()).thenReturn(testEventsPerSecond); - when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.DROP.toString()); + when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.DROP); rateLimiterAggregateAction = createObjectUnderTest(rateLimiterAggregateActionConfig); final String key = UUID.randomUUID().toString(); final String value = UUID.randomUUID().toString(); @@ -101,7 +101,7 @@ void testRateLimiterInDropMode(int testEventsPerSecond) throws InterruptedExcept @ValueSource(ints = {100, 200, 500, 1000}) void testRateLimiterInBlockMode(int testEventsPerSecond) throws InterruptedException { when(rateLimiterAggregateActionConfig.getEventsPerSecond()).thenReturn(testEventsPerSecond); - when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.BLOCK.toString()); + when(rateLimiterAggregateActionConfig.getWhenExceeds()).thenReturn(RateLimiterMode.BLOCK); rateLimiterAggregateAction = createObjectUnderTest(rateLimiterAggregateActionConfig); final String key = UUID.randomUUID().toString(); final String value = UUID.randomUUID().toString(); diff --git a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterModeTest.java b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterModeTest.java index 3fccff55ba..79de57a44d 100644 --- a/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterModeTest.java +++ b/data-prepper-plugins/aggregate-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/aggregate/actions/RateLimiterModeTest.java @@ -5,12 +5,23 @@ package org.opensearch.dataprepper.plugins.processor.aggregate.actions; +import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; import org.junit.jupiter.params.provider.EnumSource; +import java.util.stream.Stream; + +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.emptyString; +import static org.junit.jupiter.params.provider.Arguments.arguments; public class RateLimiterModeTest { @@ -20,4 +31,33 @@ void fromOptionValue(final RateLimiterMode value) { assertThat(RateLimiterMode.fromOptionValue(value.name()), is(value)); assertThat(value, instanceOf(RateLimiterMode.class)); } + + @ParameterizedTest + @ArgumentsSource(RateLimiterModeToKnownName.class) + void fromOptionValue_returns_expected_value(final RateLimiterMode rateLimiterMode, final String knownString) { + assertThat(RateLimiterMode.fromOptionValue(knownString), equalTo(rateLimiterMode)); + } + + @ParameterizedTest + @EnumSource(RateLimiterMode.class) + void getOptionValue_returns_non_empty_string_for_all_types(final RateLimiterMode rateLimiterMode) { + assertThat(rateLimiterMode.getOptionValue(), notNullValue()); + assertThat(rateLimiterMode.getOptionValue(), not(emptyString())); + } + + @ParameterizedTest + @ArgumentsSource(RateLimiterModeToKnownName.class) + void getOptionValue_returns_expected_name(final RateLimiterMode rateLimiterMode, final String expectedString) { + assertThat(rateLimiterMode.getOptionValue(), equalTo(expectedString)); + } + + static class RateLimiterModeToKnownName implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(RateLimiterMode.DROP, "drop"), + arguments(RateLimiterMode.BLOCK, "block") + ); + } + } } diff --git a/data-prepper-plugins/anomaly-detector-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/anomalydetector/AnomalyDetectorProcessorConfig.java b/data-prepper-plugins/anomaly-detector-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/anomalydetector/AnomalyDetectorProcessorConfig.java index 0eb59edc58..2122a0f318 100644 --- a/data-prepper-plugins/anomaly-detector-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/anomalydetector/AnomalyDetectorProcessorConfig.java +++ b/data-prepper-plugins/anomaly-detector-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/anomalydetector/AnomalyDetectorProcessorConfig.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.opensearch.dataprepper.model.annotations.UsesDataPrepperPlugin; import org.opensearch.dataprepper.model.configuration.PluginModel; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonProperty; @@ -23,6 +24,7 @@ public class AnomalyDetectorProcessorConfig { @JsonPropertyDescription("The ML algorithm (or model) used to detect anomalies. You must provide a mode. See random_cut_forest mode.") @JsonProperty("mode") @NotNull + @UsesDataPrepperPlugin(pluginType = AnomalyDetectorMode.class) private PluginModel detectorMode; @JsonPropertyDescription("A non-ordered List that is used as input to the ML algorithm to detect anomalies in the values of the keys in the list. At least one key is required.") diff --git a/data-prepper-plugins/armeria-common/src/main/java/org/opensearch/dataprepper/HttpRequestExceptionHandler.java b/data-prepper-plugins/armeria-common/src/main/java/org/opensearch/dataprepper/HttpRequestExceptionHandler.java index 2d0fde0196..77f7eddedc 100644 --- a/data-prepper-plugins/armeria-common/src/main/java/org/opensearch/dataprepper/HttpRequestExceptionHandler.java +++ b/data-prepper-plugins/armeria-common/src/main/java/org/opensearch/dataprepper/HttpRequestExceptionHandler.java @@ -69,6 +69,9 @@ private HttpStatus handleException(final Throwable e) { } else if (e instanceof SizeOverflowException) { requestsTooLargeCounter.increment(); return HttpStatus.REQUEST_ENTITY_TOO_LARGE; + } else if (e instanceof IllegalArgumentException) { + badRequestsCounter.increment(); + return HttpStatus.BAD_REQUEST; } internalServerErrorCounter.increment(); diff --git a/data-prepper-plugins/aws-lambda/README.md b/data-prepper-plugins/aws-lambda/README.md index 4c49873350..89298f7715 100644 --- a/data-prepper-plugins/aws-lambda/README.md +++ b/data-prepper-plugins/aws-lambda/README.md @@ -1,4 +1,55 @@ +# Lambda Processor + +This plugin enables you to send data from your Data Prepper pipeline directly to AWS Lambda functions for further processing. + +## Usage +```aidl +lambda-pipeline: +... + processor: + - aws_lambda: + aws: + region: "us-east-1" + sts_role_arn: "" + function_name: "uploadToS3Lambda" + max_retries: 3 + invocation_type: "RequestResponse" + payload_model: "batch_event" + batch: + key_name: "osi_key" + threshold: + event_count: 10 + event_collect_timeout: 15s + maximum_size: 3mb +``` + +`invocation_type` as request-response is used when the response from aws lambda comes back to dataprepper. + +In batch options, an implicit batch threshold option is that if events size is 3mb, we flush it. +`payload_model` this is used to define how the payload should be constructed from a dataprepper event by converting it to corresponding json. +`payload_model` as batch_event is used when the output needs to be formed as a batch of multiple events, and a key(key_name) will be associated with the set of events. +`payload_model` as single_event is used when the output each event is sent to lambda. +if batch option is not mentioned along with payload_model: batch_event , then batch will assume default options as follows. +default batch options: + batch_key: "events" + threshold: + event_count: 10 + maximum_size: 3mb + event_collect_timeout: 15s + + +## Developer Guide + +The integration tests for this plugin do not run as part of the Data Prepper build. +The following command runs the integration tests: + +``` +./gradlew :data-prepper-plugins:aws-lambda:integrationTest -Dtests.processor.lambda.region="us-east-1" -Dtests.processor.lambda.functionName="lambda_test_function" -Dtests.processor.lambda.sts_role_arn="arn:aws:iam::123456789012:role/dataprepper-role + +``` + + # Lambda Sink This plugin enables you to send data from your Data Prepper pipeline directly to AWS Lambda functions for further processing. @@ -15,7 +66,7 @@ lambda-pipeline: function_name: "uploadToS3Lambda" max_retries: 3 batch: - batch_key: "osi_key" + key_name: "osi_key" threshold: event_count: 3 maximum_size: 6mb diff --git a/data-prepper-plugins/aws-lambda/build.gradle b/data-prepper-plugins/aws-lambda/build.gradle index be9280e8c8..6186ba05a4 100644 --- a/data-prepper-plugins/aws-lambda/build.gradle +++ b/data-prepper-plugins/aws-lambda/build.gradle @@ -8,6 +8,7 @@ dependencies { implementation project(path: ':data-prepper-plugins:common') implementation project(':data-prepper-plugins:aws-plugin-api') implementation project(':data-prepper-plugins:failures-common') + implementation project(':data-prepper-plugins:parse-json-processor') implementation 'io.micrometer:micrometer-core' implementation 'com.fasterxml.jackson.core:jackson-core' implementation 'com.fasterxml.jackson.core:jackson-databind' @@ -65,6 +66,10 @@ task integrationTest(type: Test) { systemProperty 'tests.lambda.sink.functionName', System.getProperty('tests.lambda.sink.functionName') systemProperty 'tests.lambda.sink.sts_role_arn', System.getProperty('tests.lambda.sink.sts_role_arn') + systemProperty 'tests.lambda.processor.region', System.getProperty('tests.lambda.processor.region') + systemProperty 'tests.lambda.processor.functionName', System.getProperty('tests.lambda.processor.functionName') + systemProperty 'tests.lambda.processor.sts_role_arn', System.getProperty('tests.lambda.processor.sts_role_arn') + filter { includeTestsMatching '*IT' } diff --git a/data-prepper-plugins/aws-lambda/src/integrationTest/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorServiceIT.java b/data-prepper-plugins/aws-lambda/src/integrationTest/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorServiceIT.java new file mode 100644 index 0000000000..2676fc5f17 --- /dev/null +++ b/data-prepper-plugins/aws-lambda/src/integrationTest/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorServiceIT.java @@ -0,0 +1,165 @@ +package org.opensearch.dataprepper.plugins.lambda.processor; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; +import io.micrometer.core.instrument.Counter; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.Mock; +import static org.mockito.Mockito.when; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.log.JacksonLog; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.types.ByteCount; +import org.opensearch.dataprepper.plugins.lambda.common.accumlator.BufferFactory; +import org.opensearch.dataprepper.plugins.lambda.common.accumlator.InMemoryBufferFactory; +import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.ThresholdOptions; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.lambda.LambdaClient; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; + +@ExtendWith(MockitoExtension.class) + +public class LambdaProcessorServiceIT { + + private LambdaClient lambdaClient; + private String functionName; + private String lambdaRegion; + private String role; + private BufferFactory bufferFactory; + @Mock + private LambdaProcessorConfig lambdaProcessorConfig; + @Mock + private BatchOptions batchOptions; + @Mock + private ThresholdOptions thresholdOptions; + @Mock + private AwsAuthenticationOptions awsAuthenticationOptions; + @Mock + private AwsCredentialsSupplier awsCredentialsSupplier; + @Mock + private PluginMetrics pluginMetrics; + @Mock + private PluginFactory pluginFactory; + @Mock + private PluginSetting pluginSetting; + @Mock + private Counter numberOfRecordsSuccessCounter; + @Mock + private Counter numberOfRecordsFailedCounter; + @Mock + private ExpressionEvaluator expressionEvaluator; + + private final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.USE_PLATFORM_LINE_BREAKS)); + + + @BeforeEach + public void setUp() throws Exception { + MockitoAnnotations.openMocks(this); + lambdaRegion = System.getProperty("tests.lambda.processor.region"); + functionName = System.getProperty("tests.lambda.processor.functionName"); + role = System.getProperty("tests.lambda.processor.sts_role_arn"); + + final Region region = Region.of(lambdaRegion); + + lambdaClient = LambdaClient.builder() + .region(Region.of(lambdaRegion)) + .build(); + + bufferFactory = new InMemoryBufferFactory(); + + when(pluginMetrics.counter(LambdaProcessor.NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS)). + thenReturn(numberOfRecordsSuccessCounter); + when(pluginMetrics.counter(LambdaProcessor.NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED)). + thenReturn(numberOfRecordsFailedCounter); + } + + + private static Record createRecord() { + final JacksonEvent event = JacksonLog.builder().withData("[{\"name\":\"test\"}]").build(); + return new Record<>(event); + } + + public LambdaProcessor createObjectUnderTest(final String config) throws JsonProcessingException { + + final LambdaProcessorConfig lambdaProcessorConfig = objectMapper.readValue(config, LambdaProcessorConfig.class); + return new LambdaProcessor(pluginMetrics,lambdaProcessorConfig,awsCredentialsSupplier,expressionEvaluator); + } + + public LambdaProcessor createObjectUnderTest(LambdaProcessorConfig lambdaSinkConfig) throws JsonProcessingException { + return new LambdaProcessor(pluginMetrics,lambdaSinkConfig,awsCredentialsSupplier,expressionEvaluator); + } + + + private static Collection> generateRecords(int numberOfRecords) { + List> recordList = new ArrayList<>(); + + for (int rows = 1; rows <= numberOfRecords; rows++) { + HashMap eventData = new HashMap<>(); + eventData.put("name", "Person" + rows); + eventData.put("age", Integer.toString(rows)); + + Record eventRecord = new Record<>(JacksonEvent.builder().withData(eventData).withEventType("event").build()); + recordList.add(eventRecord); + } + return recordList; + } + + @ParameterizedTest + @ValueSource(ints = {1,3}) + void verify_records_to_lambda_success(final int recordCount) throws Exception { + + when(lambdaProcessorConfig.getFunctionName()).thenReturn(functionName); + when(lambdaProcessorConfig.getMaxConnectionRetries()).thenReturn(3); + when(lambdaProcessorConfig.getInvocationType()).thenReturn("RequestResponse"); + + LambdaProcessor objectUnderTest = createObjectUnderTest(lambdaProcessorConfig); + + Collection> recordsData = generateRecords(recordCount); + List> recordsResult = (List>) objectUnderTest.doExecute(recordsData); + Thread.sleep(Duration.ofSeconds(10).toMillis()); + + assertEquals(recordsResult.size(),recordCount); + } + + @ParameterizedTest + @ValueSource(ints = {1,3}) + void verify_records_with_batching_to_lambda(final int recordCount) throws JsonProcessingException, InterruptedException { + + when(lambdaProcessorConfig.getFunctionName()).thenReturn(functionName); + when(lambdaProcessorConfig.getMaxConnectionRetries()).thenReturn(3); + when(lambdaProcessorConfig.getInvocationType()).thenReturn("RequestResponse"); + when(thresholdOptions.getEventCount()).thenReturn(1); + when(thresholdOptions.getMaximumSize()).thenReturn(ByteCount.parse("2mb")); + when(thresholdOptions.getEventCollectTimeOut()).thenReturn(Duration.parse("PT10s")); + when(batchOptions.getKeyName()).thenReturn("lambda_batch_key"); + when(batchOptions.getThresholdOptions()).thenReturn(thresholdOptions); + when(lambdaProcessorConfig.getBatchOptions()).thenReturn(batchOptions); + + LambdaProcessor objectUnderTest = createObjectUnderTest(lambdaProcessorConfig); + Collection> records = generateRecords(recordCount); + Collection> recordsResult = objectUnderTest.doExecute(records); + Thread.sleep(Duration.ofSeconds(10).toMillis()); + assertEquals(recordsResult.size(),recordCount); + } +} \ No newline at end of file diff --git a/data-prepper-plugins/aws-lambda/src/integrationTest/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceIT.java b/data-prepper-plugins/aws-lambda/src/integrationTest/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceIT.java index 1a7e169a47..b160c8d3d9 100644 --- a/data-prepper-plugins/aws-lambda/src/integrationTest/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceIT.java +++ b/data-prepper-plugins/aws-lambda/src/integrationTest/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceIT.java @@ -10,10 +10,13 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.Timer; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import org.mockito.Mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -21,6 +24,7 @@ import org.mockito.MockitoAnnotations; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.event.Event; @@ -35,6 +39,9 @@ import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; import org.opensearch.dataprepper.plugins.lambda.common.config.ThresholdOptions; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.LAMBDA_LATENCY_METRIC; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.REQUEST_PAYLOAD_SIZE; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.RESPONSE_PAYLOAD_SIZE; import org.opensearch.dataprepper.plugins.lambda.sink.dlq.DlqPushHandler; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.lambda.LambdaClient; @@ -45,6 +52,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.concurrent.atomic.AtomicLong; @ExtendWith(MockitoExtension.class) class LambdaSinkServiceIT { @@ -76,6 +84,14 @@ class LambdaSinkServiceIT { private Counter numberOfRecordsSuccessCounter; @Mock private Counter numberOfRecordsFailedCounter; + @Mock + private ExpressionEvaluator expressionEvaluator; + @Mock + private Timer lambdaLatencyMetric; + @Mock + private AtomicLong requestPayload; + @Mock + private AtomicLong responsePayload; private final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.USE_PLATFORM_LINE_BREAKS)); @@ -98,6 +114,9 @@ public void setUp() throws Exception { thenReturn(numberOfRecordsSuccessCounter); when(pluginMetrics.counter(LambdaSinkService.NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED)). thenReturn(numberOfRecordsFailedCounter); + when(pluginMetrics.timer(LAMBDA_LATENCY_METRIC)).thenReturn(lambdaLatencyMetric); + when(pluginMetrics.gauge(eq(REQUEST_PAYLOAD_SIZE), any(AtomicLong.class))).thenReturn(requestPayload); + when(pluginMetrics.gauge(eq(RESPONSE_PAYLOAD_SIZE), any(AtomicLong.class))).thenReturn(responsePayload); } @@ -119,7 +138,8 @@ public LambdaSinkService createObjectUnderTest(final String config) throws JsonP codecContext, awsCredentialsSupplier, dlqPushHandler, - bufferFactory); + bufferFactory, + expressionEvaluator); } public LambdaSinkService createObjectUnderTest(LambdaSinkConfig lambdaSinkConfig) throws JsonProcessingException { @@ -134,7 +154,8 @@ public LambdaSinkService createObjectUnderTest(LambdaSinkConfig lambdaSinkConfig codecContext, awsCredentialsSupplier, dlqPushHandler, - bufferFactory); + bufferFactory, + expressionEvaluator); } @@ -203,7 +224,7 @@ void verify_flushed_records_with_batching_to_lambda(final int recordCount) throw when(thresholdOptions.getEventCount()).thenReturn(event_count); when(thresholdOptions.getMaximumSize()).thenReturn(ByteCount.parse("2mb")); when(thresholdOptions.getEventCollectTimeOut()).thenReturn(Duration.parse("PT10s")); - when(batchOptions.getBatchKey()).thenReturn("lambda_batch_key"); + when(batchOptions.getKeyName()).thenReturn("lambda_batch_key"); when(batchOptions.getThresholdOptions()).thenReturn(thresholdOptions); when(lambdaSinkConfig.getBatchOptions()).thenReturn(batchOptions); diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/Buffer.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/Buffer.java index a2c5dde4a9..8864ba4c31 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/Buffer.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/Buffer.java @@ -22,7 +22,7 @@ public interface Buffer { Duration getDuration(); - void flushToLambdaAsync(); + InvokeResponse flushToLambdaAsync(); InvokeResponse flushToLambdaSync(); diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/InMemoryBuffer.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/InMemoryBuffer.java index 095e6f47b2..606dd50f56 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/InMemoryBuffer.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/accumlator/InMemoryBuffer.java @@ -75,7 +75,7 @@ public Duration getDuration() { @Override - public void flushToLambdaAsync() { + public InvokeResponse flushToLambdaAsync() { InvokeResponse resp; SdkBytes payload = getPayload(); payloadRequestAsyncSize = payload.asByteArray().length; @@ -91,6 +91,7 @@ public void flushToLambdaAsync() { resp = lambdaClient.invoke(request); lambdaAsyncLatencyWatch.stop(); payloadResponseAsyncSize = resp.payload().asByteArray().length; + return resp; } @Override diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaClientFactory.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/client/LambdaClientFactory.java similarity index 58% rename from data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaClientFactory.java rename to data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/client/LambdaClientFactory.java index 03b94340f0..c0185a8eba 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaClientFactory.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/client/LambdaClientFactory.java @@ -3,11 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.dataprepper.plugins.lambda.sink; +package org.opensearch.dataprepper.plugins.lambda.common.client; import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.metricpublisher.MicrometerMetricPublisher; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.retry.RetryPolicy; @@ -16,22 +18,27 @@ public final class LambdaClientFactory { private LambdaClientFactory() { } - static LambdaClient createLambdaClient(final LambdaSinkConfig lambdaSinkConfig, - final AwsCredentialsSupplier awsCredentialsSupplier) { - final AwsCredentialsOptions awsCredentialsOptions = convertToCredentialsOptions(lambdaSinkConfig.getAwsAuthenticationOptions()); + public static LambdaClient createLambdaClient(final AwsAuthenticationOptions awsAuthenticationOptions, + final int maxConnectionRetries, + final AwsCredentialsSupplier awsCredentialsSupplier) { + final AwsCredentialsOptions awsCredentialsOptions = convertToCredentialsOptions(awsAuthenticationOptions); final AwsCredentialsProvider awsCredentialsProvider = awsCredentialsSupplier.getProvider(awsCredentialsOptions); + final PluginMetrics awsSdkMetrics = PluginMetrics.fromNames("sdk", "aws"); return LambdaClient.builder() - .region(lambdaSinkConfig.getAwsAuthenticationOptions().getAwsRegion()) - .credentialsProvider(awsCredentialsProvider) - .overrideConfiguration(createOverrideConfiguration(lambdaSinkConfig)).build(); + .region(awsAuthenticationOptions.getAwsRegion()) + .credentialsProvider(awsCredentialsProvider) + .overrideConfiguration(createOverrideConfiguration(maxConnectionRetries,awsSdkMetrics)) + .build(); } - private static ClientOverrideConfiguration createOverrideConfiguration(final LambdaSinkConfig lambdaSinkConfig) { - final RetryPolicy retryPolicy = RetryPolicy.builder().numRetries(lambdaSinkConfig.getMaxConnectionRetries()).build(); + private static ClientOverrideConfiguration createOverrideConfiguration(final int maxConnectionRetries, + final PluginMetrics awsSdkMetrics) { + final RetryPolicy retryPolicy = RetryPolicy.builder().numRetries(maxConnectionRetries).build(); return ClientOverrideConfiguration.builder() .retryPolicy(retryPolicy) + .addMetricPublisher(new MicrometerMetricPublisher(awsSdkMetrics)) .build(); } diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/codec/LambdaJsonCodec.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/codec/LambdaJsonCodec.java index a1ccaa8561..29e91dde88 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/codec/LambdaJsonCodec.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/codec/LambdaJsonCodec.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Objects; +@Deprecated public class LambdaJsonCodec implements OutputCodec { private final ObjectMapper objectMapper = new ObjectMapper(); private static final String JSON = "json"; diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/BatchOptions.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/BatchOptions.java index 099bed2b54..bd911b8220 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/BatchOptions.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/BatchOptions.java @@ -7,21 +7,24 @@ import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; public class BatchOptions { + static final String DEFAULT_KEY_NAME = "events"; - private static final String DEFAULT_BATCH_KEY = "events"; - - @JsonProperty("batch_key") - private String batchKey = DEFAULT_BATCH_KEY; + @JsonProperty("key_name") + @Size(min = 1, max = 2048) + private String keyName = DEFAULT_KEY_NAME; @JsonProperty("threshold") @NotNull ThresholdOptions thresholdOptions = new ThresholdOptions(); - public String getBatchKey(){return batchKey;} - public ThresholdOptions getThresholdOptions(){return thresholdOptions;} + public String getKeyName() { + return keyName; + } + } \ No newline at end of file diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/LambdaCommonConfig.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/LambdaCommonConfig.java new file mode 100644 index 0000000000..d70d205aa1 --- /dev/null +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/LambdaCommonConfig.java @@ -0,0 +1,20 @@ +package org.opensearch.dataprepper.plugins.lambda.common.config; + +import java.util.Map; + +public class LambdaCommonConfig { + public static final String REQUEST_RESPONSE = "request-response"; + public static final String EVENT = "event"; + public static final String BATCH_EVENT = "batch-event"; + public static final String SINGLE_EVENT = "single-event"; + + //AWS Lambda payload options needs this format + public static final String REQUEST_RESPONSE_LAMBDA = "RequestResponse"; + public static final String EVENT_LAMBDA = "Event"; + + //Translate dataprepper invocation type to lambda invocation type + public static final Map invocationTypeMap = Map.of( + LambdaCommonConfig.EVENT, EVENT_LAMBDA, + LambdaCommonConfig.REQUEST_RESPONSE, REQUEST_RESPONSE_LAMBDA + ); +} diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptions.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptions.java index ca8ed6e574..a8d5d08b02 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptions.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptions.java @@ -16,13 +16,14 @@ public class ThresholdOptions { - + private static final int DEFAULT_EVENT_COUNT = 10; private static final String DEFAULT_BYTE_CAPACITY = "3mb"; + private static final Duration DEFAULT_EVENT_TIMEOUT = Duration.ofSeconds(10); @JsonProperty("event_count") @Size(min = 0, max = 10000000, message = "event_count size should be between 0 and 10000000") @NotNull - private int eventCount; + private int eventCount = DEFAULT_EVENT_COUNT; @JsonProperty("maximum_size") private String maximumSize = DEFAULT_BYTE_CAPACITY; @@ -31,7 +32,7 @@ public class ThresholdOptions { @DurationMin(seconds = 1) @DurationMax(seconds = 3600) @NotNull - private Duration eventCollectTimeOut; + private Duration eventCollectTimeOut = DEFAULT_EVENT_TIMEOUT; /** * Read event collection duration configuration. diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessor.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessor.java new file mode 100644 index 0000000000..255cbcbe23 --- /dev/null +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessor.java @@ -0,0 +1,265 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.lambda.processor; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.Timer; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.codec.OutputCodec; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventHandle; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.processor.AbstractProcessor; +import org.opensearch.dataprepper.model.processor.Processor; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.sink.OutputCodecContext; +import org.opensearch.dataprepper.model.types.ByteCount; +import org.opensearch.dataprepper.plugins.codec.json.JsonOutputCodec; +import org.opensearch.dataprepper.plugins.codec.json.JsonOutputCodecConfig; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonOutputCodec; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonOutputConfig; +import org.opensearch.dataprepper.plugins.lambda.common.accumlator.Buffer; +import org.opensearch.dataprepper.plugins.lambda.common.accumlator.BufferFactory; +import org.opensearch.dataprepper.plugins.lambda.common.accumlator.InMemoryBufferFactory; +import org.opensearch.dataprepper.plugins.lambda.common.client.LambdaClientFactory; +import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.BATCH_EVENT; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.SINGLE_EVENT; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.invocationTypeMap; +import org.opensearch.dataprepper.plugins.lambda.common.util.ThresholdCheck; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import software.amazon.awssdk.awscore.exception.AwsServiceException; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.core.exception.SdkClientException; +import software.amazon.awssdk.services.lambda.LambdaClient; +import software.amazon.awssdk.services.lambda.model.InvokeResponse; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +@DataPrepperPlugin(name = "aws_lambda", pluginType = Processor.class, pluginConfigurationType = LambdaProcessorConfig.class) +public class LambdaProcessor extends AbstractProcessor, Record> { + + public static final String NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS = "lambdaProcessorObjectsEventsSucceeded"; + public static final String NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED = "lambdaProcessorObjectsEventsFailed"; + public static final String LAMBDA_LATENCY_METRIC = "lambdaProcessorLatency"; + public static final String REQUEST_PAYLOAD_SIZE = "requestPayloadSize"; + public static final String RESPONSE_PAYLOAD_SIZE = "responsePayloadSize"; + + private static final Logger LOG = LoggerFactory.getLogger(LambdaProcessor.class); + + private final String functionName; + private final String whenCondition; + private final ExpressionEvaluator expressionEvaluator; + private final Counter numberOfRecordsSuccessCounter; + private final Counter numberOfRecordsFailedCounter; + private final Timer lambdaLatencyMetric; + private final String invocationType; + private final Collection bufferedEventHandles; + private final List events; + private final BatchOptions batchOptions; + private final ObjectMapper objectMapper = new ObjectMapper(); + private final BufferFactory bufferFactory; + private final LambdaClient lambdaClient; + private final Boolean isBatchEnabled; + Buffer currentBuffer; + private final AtomicLong requestPayloadMetric; + private final AtomicLong responsePayload; + private String payloadModel = null; + private int maxEvents = 0; + private ByteCount maxBytes = null; + private Duration maxCollectionDuration = null; + private int maxRetries = 0; + private OutputCodec codec = null; + OutputCodecContext codecContext = null; + + @DataPrepperPluginConstructor + public LambdaProcessor(final PluginMetrics pluginMetrics, final LambdaProcessorConfig lambdaProcessorConfig, final AwsCredentialsSupplier awsCredentialsSupplier, final ExpressionEvaluator expressionEvaluator) { + super(pluginMetrics); + this.expressionEvaluator = expressionEvaluator; + this.numberOfRecordsSuccessCounter = pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS); + this.numberOfRecordsFailedCounter = pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED); + this.lambdaLatencyMetric = pluginMetrics.timer(LAMBDA_LATENCY_METRIC); + this.requestPayloadMetric = pluginMetrics.gauge(REQUEST_PAYLOAD_SIZE, new AtomicLong()); + this.responsePayload = pluginMetrics.gauge(RESPONSE_PAYLOAD_SIZE, new AtomicLong()); + + functionName = lambdaProcessorConfig.getFunctionName(); + whenCondition = lambdaProcessorConfig.getWhenCondition(); + maxRetries = lambdaProcessorConfig.getMaxConnectionRetries(); + batchOptions = lambdaProcessorConfig.getBatchOptions(); + payloadModel = lambdaProcessorConfig.getPayloadModel(); + codecContext = new OutputCodecContext(); + + if (payloadModel.equals(BATCH_EVENT)) { + JsonOutputCodecConfig jsonOutputCodecConfig = new JsonOutputCodecConfig(); + jsonOutputCodecConfig.setKeyName(batchOptions.getKeyName()); + codec = new JsonOutputCodec(jsonOutputCodecConfig); + maxEvents = batchOptions.getThresholdOptions().getEventCount(); + maxBytes = batchOptions.getThresholdOptions().getMaximumSize(); // remove + maxCollectionDuration = batchOptions.getThresholdOptions().getEventCollectTimeOut(); + isBatchEnabled = true; + LOG.info("maxEvents:" + maxEvents + " maxbytes:" + maxBytes + " maxDuration:" + maxCollectionDuration); + } else if(payloadModel.equals(SINGLE_EVENT)) { + NdjsonOutputConfig ndjsonOutputCodecConfig = new NdjsonOutputConfig(); + codec = new NdjsonOutputCodec(ndjsonOutputCodecConfig); + isBatchEnabled = false; + } else{ + throw new RuntimeException("invalid payload_model option"); + } + + //EVENT type will soon be supported. + if(lambdaProcessorConfig.getInvocationType().equals(LambdaCommonConfig.EVENT) && + !lambdaProcessorConfig.getInvocationType().equals(LambdaCommonConfig.REQUEST_RESPONSE)){ + throw new RuntimeException("Unsupported invocation type " + lambdaProcessorConfig.getInvocationType()); + } + + invocationType = invocationTypeMap.get(lambdaProcessorConfig.getInvocationType()); + + bufferedEventHandles = new LinkedList<>(); + events = new ArrayList(); + + lambdaClient = LambdaClientFactory.createLambdaClient(lambdaProcessorConfig.getAwsAuthenticationOptions(), + lambdaProcessorConfig.getMaxConnectionRetries() + , awsCredentialsSupplier); + + this.bufferFactory = new InMemoryBufferFactory(); + try { + currentBuffer = this.bufferFactory.getBuffer(lambdaClient, functionName, invocationType); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + + @Override + public Collection> doExecute(Collection> records) { + if (records.isEmpty()) { + return records; + } + + //lambda mutates event + List> resultRecords = new ArrayList<>(); + + for (Record record : records) { + final Event event = record.getData(); + + if (whenCondition != null && !expressionEvaluator.evaluateConditional(whenCondition, event)) { + continue; + } + + try { + if (currentBuffer.getEventCount() == 0) { + codec.start(currentBuffer.getOutputStream(), event, codecContext); + } + codec.writeEvent(event, currentBuffer.getOutputStream()); + int count = currentBuffer.getEventCount() + 1; + currentBuffer.setEventCount(count); + + // flush to lambda and update result record + flushToLambdaIfNeeded(resultRecords); + } catch (Exception e) { + numberOfRecordsFailedCounter.increment(currentBuffer.getEventCount()); + LOG.error(EVENT, "There was an exception while processing Event [{}]" , event, e); + //reset buffer + try { + currentBuffer = bufferFactory.getBuffer(lambdaClient, functionName, invocationType); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + } + return resultRecords; + } + + @Override + public void prepareForShutdown() { + + } + + @Override + public boolean isReadyForShutdown() { + return false; + } + + @Override + public void shutdown() { + + } + + protected void flushToLambdaIfNeeded(List> resultRecords) throws InterruptedException, IOException { + LOG.info("Flush to Lambda check: currentBuffer.size={}, currentBuffer.events={}, currentBuffer.duration={}", currentBuffer.getSize(), currentBuffer.getEventCount(), currentBuffer.getDuration()); + + if (ThresholdCheck.checkThresholdExceed(currentBuffer, maxEvents, maxBytes, maxCollectionDuration, isBatchEnabled)) { + try{ + codec.complete(currentBuffer.getOutputStream()); + responsePayload.set(currentBuffer.getPayloadResponseSyncSize()); + InvokeResponse lambdaResponse = currentBuffer.flushToLambdaSync(); + handleLambdaResponse(lambdaResponse); + numberOfRecordsSuccessCounter.increment(currentBuffer.getEventCount()); + lambdaLatencyMetric.record(currentBuffer.getFlushLambdaSyncLatencyMetric()); + requestPayloadMetric.set(currentBuffer.getPayloadRequestSyncSize()); + Event lambdaEvent = convertLambdaResponseToEvent(lambdaResponse); + resultRecords.add(new Record<>(lambdaEvent)); + } catch(AwsServiceException | SdkClientException e) { + LOG.error(EVENT, "Exception occurred while uploading records to lambda. functionName: {} | exception:", functionName, e); + numberOfRecordsFailedCounter.increment(currentBuffer.getEventCount()); + } catch (final IOException e) { + LOG.error("Exception while completing codec", e); + numberOfRecordsFailedCounter.increment(currentBuffer.getEventCount()); + } + //Reset Buffer + try { + currentBuffer = bufferFactory.getBuffer(lambdaClient, functionName, invocationType); + } catch (IOException ex) { + throw new RuntimeException("Failed to reset buffer after exception", ex); + } + } + } + + protected Event convertLambdaResponseToEvent(InvokeResponse lambdaResponse) { + try { + SdkBytes payload = lambdaResponse.payload(); + if (payload != null) { + String payloadJsonString = payload.asString(StandardCharsets.UTF_8); + + JsonNode jsonNode = null; + try { + jsonNode = objectMapper.readTree(payloadJsonString); + } catch (JsonParseException e) { + throw new RuntimeException("payload output is not json formatted"); + } + return JacksonEvent.builder().withEventType("event").withData(jsonNode).build(); + } + } catch (Exception e) { + LOG.error("Error converting Lambda response to Event", e); + throw new RuntimeException("Error converting Lambda response to Event"); + } + return null; + } + + private void handleLambdaResponse(InvokeResponse response){ + int statusCode = response.statusCode(); + if (statusCode < 200 || statusCode >= 300) { + throw new RuntimeException("Lambda invocation failed with status code: " + statusCode); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorConfig.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorConfig.java new file mode 100644 index 0000000000..51faabf10d --- /dev/null +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorConfig.java @@ -0,0 +1,69 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ +package org.opensearch.dataprepper.plugins.lambda.processor; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.BATCH_EVENT; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.REQUEST_RESPONSE; + +public class LambdaProcessorConfig { + + private static final int DEFAULT_CONNECTION_RETRIES = 3; + + @JsonProperty("aws") + @NotNull + @Valid + private AwsAuthenticationOptions awsAuthenticationOptions; + + @JsonProperty("function_name") + @NotEmpty + @Size(min = 3, max = 500, message = "function name length should be at least 3 characters") + private String functionName; + + @JsonProperty("max_retries") + private int maxConnectionRetries = DEFAULT_CONNECTION_RETRIES; + + @JsonProperty("invocation_type") + private String invocationType = REQUEST_RESPONSE; + + @JsonProperty("payload_model") + private String payloadModel = BATCH_EVENT; + + @JsonProperty("batch") + private BatchOptions batchOptions; + + @JsonProperty("lambda_when") + private String whenCondition; + + public AwsAuthenticationOptions getAwsAuthenticationOptions() { + return awsAuthenticationOptions; + } + + public BatchOptions getBatchOptions(){return batchOptions;} + + public String getFunctionName() { + return functionName; + } + + public int getMaxConnectionRetries() { + return maxConnectionRetries; + } + + public String getInvocationType(){return invocationType;} + + public String getWhenCondition() { + return whenCondition; + } + + public String getPayloadModel() { + return payloadModel; + } +} \ No newline at end of file diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSink.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSink.java index 715ef3295d..39559bf154 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSink.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSink.java @@ -6,19 +6,21 @@ package org.opensearch.dataprepper.plugins.lambda.sink; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import org.opensearch.dataprepper.model.plugin.PluginFactory; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.sink.AbstractSink; import org.opensearch.dataprepper.model.sink.OutputCodecContext; import org.opensearch.dataprepper.model.sink.Sink; -import org.opensearch.dataprepper.model.plugin.PluginFactory; -import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.sink.SinkContext; import org.opensearch.dataprepper.plugins.lambda.common.accumlator.BufferFactory; import org.opensearch.dataprepper.plugins.lambda.common.accumlator.InMemoryBufferFactory; +import org.opensearch.dataprepper.plugins.lambda.common.client.LambdaClientFactory; import org.opensearch.dataprepper.plugins.lambda.sink.dlq.DlqPushHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,12 +44,15 @@ public LambdaSink(final PluginSetting pluginSetting, final LambdaSinkConfig lambdaSinkConfig, final PluginFactory pluginFactory, final SinkContext sinkContext, - final AwsCredentialsSupplier awsCredentialsSupplier + final AwsCredentialsSupplier awsCredentialsSupplier, + final ExpressionEvaluator expressionEvaluator ) { super(pluginSetting); sinkInitialized = Boolean.FALSE; OutputCodecContext outputCodecContext = OutputCodecContext.fromSinkContext(sinkContext); - LambdaClient lambdaClient = LambdaClientFactory.createLambdaClient(lambdaSinkConfig, awsCredentialsSupplier); + LambdaClient lambdaClient = LambdaClientFactory.createLambdaClient(lambdaSinkConfig.getAwsAuthenticationOptions(), + lambdaSinkConfig.getMaxConnectionRetries() + , awsCredentialsSupplier); if(lambdaSinkConfig.getDlqPluginSetting() != null) { this.dlqPushHandler = new DlqPushHandler(pluginFactory, String.valueOf(lambdaSinkConfig.getDlqPluginSetting().get(BUCKET)), @@ -55,6 +60,7 @@ public LambdaSink(final PluginSetting pluginSetting, , lambdaSinkConfig.getDlqStsRegion(), String.valueOf(lambdaSinkConfig.getDlqPluginSetting().get(KEY_PATH))); } + this.bufferFactory = new InMemoryBufferFactory(); lambdaSinkService = new LambdaSinkService(lambdaClient, @@ -65,7 +71,8 @@ public LambdaSink(final PluginSetting pluginSetting, outputCodecContext, awsCredentialsSupplier, dlqPushHandler, - bufferFactory); + bufferFactory, + expressionEvaluator); } diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkConfig.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkConfig.java index bb50e2510e..6601dbb26b 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkConfig.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkConfig.java @@ -12,6 +12,8 @@ import org.opensearch.dataprepper.model.configuration.PluginModel; import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.BATCH_EVENT; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.EVENT; import java.util.Map; import java.util.Objects; @@ -19,9 +21,7 @@ public class LambdaSinkConfig { private static final int DEFAULT_CONNECTION_RETRIES = 3; - public static final String STS_REGION = "region"; - public static final String STS_ROLE_ARN = "sts_role_arn"; @JsonProperty("aws") @@ -38,12 +38,21 @@ public class LambdaSinkConfig { @JsonProperty("max_retries") private int maxConnectionRetries = DEFAULT_CONNECTION_RETRIES; + @JsonProperty("invocation_type") + private String invocationType = EVENT; + + @JsonProperty("payload_model") + private String payloadModel = BATCH_EVENT; + @JsonProperty("dlq") private PluginModel dlq; @JsonProperty("batch") private BatchOptions batchOptions; + @JsonProperty("lambda_when") + private String whenCondition; + public AwsAuthenticationOptions getAwsAuthenticationOptions() { return awsAuthenticationOptions; } @@ -77,4 +86,14 @@ public String getDlqStsRegion(){ public Map getDlqPluginSetting(){ return dlq != null ? dlq.getPluginSettings() : Map.of(); } + + public String getInvocationType(){return invocationType;} + + public String getWhenCondition() { + return whenCondition; + } + + public String getPayloadModel() { + return payloadModel; + } } \ No newline at end of file diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkService.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkService.java index 9a788e6816..b9f33c26cb 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkService.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkService.java @@ -6,7 +6,10 @@ package org.opensearch.dataprepper.plugins.lambda.sink; import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.Timer; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.codec.OutputCodec; import org.opensearch.dataprepper.model.configuration.PluginSetting; @@ -16,10 +19,16 @@ import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.sink.OutputCodecContext; import org.opensearch.dataprepper.model.types.ByteCount; +import org.opensearch.dataprepper.plugins.codec.json.JsonOutputCodec; +import org.opensearch.dataprepper.plugins.codec.json.JsonOutputCodecConfig; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonOutputCodec; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonOutputConfig; import org.opensearch.dataprepper.plugins.lambda.common.accumlator.Buffer; import org.opensearch.dataprepper.plugins.lambda.common.accumlator.BufferFactory; -import org.opensearch.dataprepper.plugins.lambda.common.codec.LambdaJsonCodec; import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.BATCH_EVENT; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.SINGLE_EVENT; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.invocationTypeMap; import org.opensearch.dataprepper.plugins.lambda.common.util.ThresholdCheck; import org.opensearch.dataprepper.plugins.lambda.sink.dlq.DlqPushHandler; import org.opensearch.dataprepper.plugins.lambda.sink.dlq.LambdaSinkFailedDlqData; @@ -29,6 +38,7 @@ import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.services.lambda.LambdaClient; +import software.amazon.awssdk.services.lambda.model.InvokeResponse; import java.io.IOException; import java.time.Duration; @@ -36,89 +46,94 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; -import java.util.Objects; -import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class LambdaSinkService { - private static final Logger LOG = LoggerFactory.getLogger(LambdaSinkService.class); public static final String NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS = "lambdaSinkObjectsEventsSucceeded"; public static final String NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED = "lambdaSinkObjectsEventsFailed"; + public static final String LAMBDA_LATENCY_METRIC = "lambdaSinkLatency"; + public static final String REQUEST_PAYLOAD_SIZE = "requestPayloadSize"; + public static final String RESPONSE_PAYLOAD_SIZE = "responsePayloadSize"; + private static final Logger LOG = LoggerFactory.getLogger(LambdaSinkService.class); + private final AtomicLong requestPayloadMetric; + private final AtomicLong responsePayloadMetric; private final PluginSetting pluginSetting; private final Lock reentrantLock; private final LambdaSinkConfig lambdaSinkConfig; private final LambdaClient lambdaClient; private final String functionName; - private int maxEvents = 0; - private ByteCount maxBytes = null; - private Duration maxCollectionDuration = null; - private int maxRetries = 0; + private final String whenCondition; + private final ExpressionEvaluator expressionEvaluator; private final Counter numberOfRecordsSuccessCounter; private final Counter numberOfRecordsFailedCounter; - private final String ASYNC_INVOCATION_TYPE = "Event"; + private final Timer lambdaLatencyMetric; private final String invocationType; - private Buffer currentBuffer; private final BufferFactory bufferFactory; private final DlqPushHandler dlqPushHandler; private final Collection bufferedEventHandles; private final List events; - private OutputCodec codec = null; private final BatchOptions batchOptions; private final Boolean isBatchEnabled; + private int maxEvents = 0; + private ByteCount maxBytes = null; + private Duration maxCollectionDuration = null; + private int maxRetries = 0; + private Buffer currentBuffer; + private OutputCodec codec = null; private OutputCodecContext codecContext = null; - private final String batchKey; - - public LambdaSinkService(final LambdaClient lambdaClient, - final LambdaSinkConfig lambdaSinkConfig, - final PluginMetrics pluginMetrics, - final PluginFactory pluginFactory, - final PluginSetting pluginSetting, - final OutputCodecContext codecContext, - final AwsCredentialsSupplier awsCredentialsSupplier, - final DlqPushHandler dlqPushHandler, - final BufferFactory bufferFactory) { + private String payloadModel = null; + + public LambdaSinkService(final LambdaClient lambdaClient, final LambdaSinkConfig lambdaSinkConfig, final PluginMetrics pluginMetrics, final PluginFactory pluginFactory, final PluginSetting pluginSetting, final OutputCodecContext codecContext, final AwsCredentialsSupplier awsCredentialsSupplier, final DlqPushHandler dlqPushHandler, final BufferFactory bufferFactory, final ExpressionEvaluator expressionEvaluator) { this.lambdaSinkConfig = lambdaSinkConfig; this.pluginSetting = pluginSetting; + this.expressionEvaluator = expressionEvaluator; this.dlqPushHandler = dlqPushHandler; this.lambdaClient = lambdaClient; + this.numberOfRecordsSuccessCounter = pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS); + this.numberOfRecordsFailedCounter = pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED); + this.lambdaLatencyMetric = pluginMetrics.timer(LAMBDA_LATENCY_METRIC); + this.requestPayloadMetric = pluginMetrics.gauge(REQUEST_PAYLOAD_SIZE, new AtomicLong()); + this.responsePayloadMetric = pluginMetrics.gauge(RESPONSE_PAYLOAD_SIZE, new AtomicLong()); reentrantLock = new ReentrantLock(); - numberOfRecordsSuccessCounter = pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS); - numberOfRecordsFailedCounter = pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED); functionName = lambdaSinkConfig.getFunctionName(); - + payloadModel = lambdaSinkConfig.getPayloadModel(); maxRetries = lambdaSinkConfig.getMaxConnectionRetries(); batchOptions = lambdaSinkConfig.getBatchOptions(); + whenCondition = lambdaSinkConfig.getWhenCondition(); - if (!Objects.isNull(batchOptions)){ + if (payloadModel.equals(BATCH_EVENT)) { + JsonOutputCodecConfig jsonOutputCodecConfig = new JsonOutputCodecConfig(); + jsonOutputCodecConfig.setKeyName(batchOptions.getKeyName()); + codec = new JsonOutputCodec(jsonOutputCodecConfig); maxEvents = batchOptions.getThresholdOptions().getEventCount(); maxBytes = batchOptions.getThresholdOptions().getMaximumSize(); maxCollectionDuration = batchOptions.getThresholdOptions().getEventCollectTimeOut(); - batchKey = batchOptions.getBatchKey(); isBatchEnabled = true; - }else{ - batchKey = null; + } else if (payloadModel.equals(SINGLE_EVENT)) { + NdjsonOutputConfig ndjsonOutputCodecConfig = new NdjsonOutputConfig(); + codec = new NdjsonOutputCodec(ndjsonOutputCodecConfig); isBatchEnabled = false; + } else { + throw new RuntimeException("invalid payload_model option"); } this.codecContext = codecContext; - - codec = new LambdaJsonCodec(batchKey); bufferedEventHandles = new LinkedList<>(); events = new ArrayList(); - invocationType = ASYNC_INVOCATION_TYPE; + invocationType = invocationTypeMap.get(lambdaSinkConfig.getInvocationType()); this.bufferFactory = bufferFactory; try { - currentBuffer = bufferFactory.getBuffer(lambdaClient,functionName,invocationType); + currentBuffer = bufferFactory.getBuffer(lambdaClient, functionName, invocationType); } catch (IOException e) { throw new RuntimeException(e); } } - public void output(Collection> records){ - // Don't acquire the lock if there's no work to be done + public void output(Collection> records) { if (records.isEmpty() && currentBuffer.getEventCount() == 0) { return; } @@ -128,6 +143,11 @@ public void output(Collection> records){ try { for (Record record : records) { final Event event = record.getData(); + + if (whenCondition != null && !expressionEvaluator.evaluateConditional(whenCondition, event)) { + continue; + } + try { if (currentBuffer.getEventCount() == 0) { codec.start(currentBuffer.getOutputStream(), event, codecContext); @@ -137,24 +157,27 @@ public void output(Collection> records){ currentBuffer.setEventCount(count); bufferedEventHandles.add(event.getEventHandle()); + flushToLambdaIfNeeded(); } catch (Exception ex) { - if(sampleException == null) { + LOG.error(EVENT, "There was an exception while processing Event [{}]" , event, ex); + if (sampleException == null) { sampleException = ex; } failedEvents.add(event); + handleFailure(currentBuffer, ex); //reset buffer + try { + currentBuffer = bufferFactory.getBuffer(lambdaClient, functionName, invocationType); + } catch (IOException e) { + throw new RuntimeException(e); + } } - - flushToLambdaIfNeeded(); } } finally { reentrantLock.unlock(); } - if(!failedEvents.isEmpty()) { - failedEvents - .stream() - .map(Event::getEventHandle) - .forEach(eventHandle -> eventHandle.release(false)); + if (!failedEvents.isEmpty()) { + failedEvents.stream().map(Event::getEventHandle).forEach(eventHandle -> eventHandle.release(false)); LOG.error("Unable to add {} events to buffer. Dropping these events. Sample exception provided.", failedEvents.size(), sampleException); } } @@ -167,66 +190,49 @@ private void releaseEventHandles(final boolean result) { } private void flushToLambdaIfNeeded() { - LOG.trace("Flush to Lambda check: currentBuffer.size={}, currentBuffer.events={}, currentBuffer.duration={}", - currentBuffer.getSize(), currentBuffer.getEventCount(), currentBuffer.getDuration()); - final AtomicReference errorMsgObj = new AtomicReference<>(); - - try { - if (ThresholdCheck.checkThresholdExceed(currentBuffer, maxEvents, maxBytes, maxCollectionDuration, isBatchEnabled)) { - try { - codec.complete(currentBuffer.getOutputStream()); - LOG.info("Writing {} to Lambda with {} events and size of {} bytes.", - functionName, currentBuffer.getEventCount(), currentBuffer.getSize()); - final boolean isFlushToLambda = retryFlushToLambda(currentBuffer, errorMsgObj); - - if (isFlushToLambda) { - LOG.info("Successfully flushed to Lambda {}.", functionName); - numberOfRecordsSuccessCounter.increment(currentBuffer.getEventCount()); - releaseEventHandles(true); - } else { - LOG.error("Failed to save to Lambda {}", functionName); - numberOfRecordsFailedCounter.increment(currentBuffer.getEventCount()); - SdkBytes payload = currentBuffer.getPayload(); - if(dlqPushHandler!=null) { - dlqPushHandler.perform(pluginSetting, new LambdaSinkFailedDlqData(payload, errorMsgObj.get(), 0)); - releaseEventHandles(true); - }else{ - releaseEventHandles(false); - } - } + LOG.info("Flush to Lambda check: currentBuffer.size={}, currentBuffer.events={}, currentBuffer.duration={}", currentBuffer.getSize(), currentBuffer.getEventCount(), currentBuffer.getDuration()); - //reset buffer after flush - currentBuffer = bufferFactory.getBuffer(lambdaClient,functionName,invocationType); - } catch (final IOException e) { - releaseEventHandles(false); - LOG.error("Exception while completing codec", e); - } + if (ThresholdCheck.checkThresholdExceed(currentBuffer, maxEvents, maxBytes, maxCollectionDuration, isBatchEnabled)) { + try { + codec.complete(currentBuffer.getOutputStream()); + responsePayloadMetric.set(currentBuffer.getPayloadResponseSyncSize()); + InvokeResponse response = currentBuffer.flushToLambdaAsync(); + handleLambdaResponse(response); + lambdaLatencyMetric.record(currentBuffer.getFlushLambdaSyncLatencyMetric()); + requestPayloadMetric.set(currentBuffer.getPayloadRequestSyncSize()); + numberOfRecordsSuccessCounter.increment(currentBuffer.getEventCount()); + releaseEventHandles(true); + } catch (AwsServiceException | SdkClientException e) { + LOG.error("Exception occurred while uploading records to lambda : {} | exception:", functionName, e); + handleFailure(currentBuffer, e); + } catch (final IOException e) { + LOG.error("Exception while completing codec", e); + handleFailure(currentBuffer, e); + } + // Reset buffer + try { + currentBuffer = bufferFactory.getBuffer(lambdaClient, functionName, invocationType); + } catch (IOException ex) { + throw new RuntimeException("Failed to reset buffer after exception", ex); } - } catch (InterruptedException e) { - throw new RuntimeException(e); } } - protected boolean retryFlushToLambda(Buffer currentBuffer, - final AtomicReference errorMsgObj) throws InterruptedException { - boolean isUploadedToLambda = Boolean.FALSE; - int retryCount = maxRetries; - do { + private void handleFailure(Buffer currentBuffer, Exception e) { + numberOfRecordsFailedCounter.increment(currentBuffer.getEventCount()); + SdkBytes payload = currentBuffer.getPayload(); + if (dlqPushHandler != null) { + dlqPushHandler.perform(pluginSetting, new LambdaSinkFailedDlqData(payload, e.getMessage(), 0)); + releaseEventHandles(true); + } else { + releaseEventHandles(false); + } + } - try { - currentBuffer.flushToLambdaAsync(); - isUploadedToLambda = Boolean.TRUE; - } catch (AwsServiceException | SdkClientException e) { - errorMsgObj.set(e.getMessage()); - LOG.error("Exception occurred while uploading records to lambda. Retry countdown : {} | exception:", - retryCount, e); - --retryCount; - if (retryCount == 0) { - return isUploadedToLambda; - } - Thread.sleep(5000); - } - } while (!isUploadedToLambda); - return isUploadedToLambda; + private void handleLambdaResponse(InvokeResponse response) { + int statusCode = response.statusCode(); + if (statusCode < 200 || statusCode >= 300) { + LOG.warn("Lambda invocation returned with non-success status code: {}", statusCode); + } } } diff --git a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/dlq/LambdaSinkFailedDlqData.java b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/dlq/LambdaSinkFailedDlqData.java index 8941966b77..5ca8301be1 100644 --- a/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/dlq/LambdaSinkFailedDlqData.java +++ b/data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/sink/dlq/LambdaSinkFailedDlqData.java @@ -4,7 +4,6 @@ */ package org.opensearch.dataprepper.plugins.lambda.sink.dlq; -import com.fasterxml.jackson.core.JsonProcessingException; import software.amazon.awssdk.core.SdkBytes; @@ -16,7 +15,7 @@ public class LambdaSinkFailedDlqData { private int status; - public LambdaSinkFailedDlqData(SdkBytes payload, String message, int status) throws JsonProcessingException { + public LambdaSinkFailedDlqData(SdkBytes payload, String message, int status) { this.payload = payload; this.message = message; this.status = status; diff --git a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/common/client/LambdaClientFactoryTest.java b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/common/client/LambdaClientFactoryTest.java new file mode 100644 index 0000000000..da3428dc1a --- /dev/null +++ b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/common/client/LambdaClientFactoryTest.java @@ -0,0 +1,103 @@ +package org.opensearch.dataprepper.plugins.lambda.common.client; + +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.ArgumentCaptor; +import static org.mockito.ArgumentMatchers.any; +import org.mockito.Mock; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.lambda.LambdaClient; +import software.amazon.awssdk.services.lambda.LambdaClientBuilder; + +import java.util.Map; +import java.util.UUID; + +@ExtendWith(MockitoExtension.class) +class LambdaClientFactoryTest { + @Mock + private AwsCredentialsSupplier awsCredentialsSupplier; + + @Mock + private AwsAuthenticationOptions awsAuthenticationOptions; + + @Mock + private AwsCredentialsProvider awsCredentialsProvider; + + @BeforeEach + void setUp() { + // No setup needed here as we're mocking static methods in tests + } + + @Test + void createLambdaClient_with_real_LambdaClient() { + try (var mockedStaticLambdaClient = mockStatic(LambdaClient.class)) { + LambdaClientBuilder lambdaClientBuilder = mock(LambdaClientBuilder.class); + mockedStaticLambdaClient.when(LambdaClient::builder).thenReturn(lambdaClientBuilder); + + when(lambdaClientBuilder.region(any(Region.class))).thenReturn(lambdaClientBuilder); + when(lambdaClientBuilder.credentialsProvider(any(AwsCredentialsProvider.class))).thenReturn(lambdaClientBuilder); + when(lambdaClientBuilder.overrideConfiguration(any(ClientOverrideConfiguration.class))).thenReturn(lambdaClientBuilder); + when(lambdaClientBuilder.build()).thenReturn(mock(LambdaClient.class)); + + when(awsAuthenticationOptions.getAwsRegion()).thenReturn(Region.US_EAST_1); + when(awsCredentialsSupplier.getProvider(any(AwsCredentialsOptions.class))).thenReturn(awsCredentialsProvider); + + final LambdaClient lambdaClient = LambdaClientFactory.createLambdaClient(awsAuthenticationOptions, 3, awsCredentialsSupplier); + + assertThat(lambdaClient, notNullValue()); + } + } + + @ParameterizedTest + @ValueSource(strings = {"us-east-1", "us-west-2", "eu-central-1"}) + void createlambdaClient_provides_correct_inputs(final String regionString) { + try (var mockedStaticLambdaClient = mockStatic(LambdaClient.class)) { + LambdaClientBuilder lambdaClientBuilder = mock(LambdaClientBuilder.class); + mockedStaticLambdaClient.when(LambdaClient::builder).thenReturn(lambdaClientBuilder); + + final Region region = Region.of(regionString); + final String stsRoleArn = UUID.randomUUID().toString(); + final Map stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + when(awsAuthenticationOptions.getAwsRegion()).thenReturn(region); + when(awsAuthenticationOptions.getAwsStsRoleArn()).thenReturn(stsRoleArn); + when(awsAuthenticationOptions.getAwsStsHeaderOverrides()).thenReturn(stsHeaderOverrides); + when(awsCredentialsSupplier.getProvider(any())).thenReturn(awsCredentialsProvider); + + when(lambdaClientBuilder.region(any(Region.class))).thenReturn(lambdaClientBuilder); + when(lambdaClientBuilder.credentialsProvider(any(AwsCredentialsProvider.class))).thenReturn(lambdaClientBuilder); + when(lambdaClientBuilder.overrideConfiguration(any(ClientOverrideConfiguration.class))).thenReturn(lambdaClientBuilder); + when(lambdaClientBuilder.build()).thenReturn(mock(LambdaClient.class)); + + final LambdaClient lambdaClient = LambdaClientFactory.createLambdaClient(awsAuthenticationOptions, 3, awsCredentialsSupplier); + + final ArgumentCaptor credentialsProviderArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsProvider.class); + verify(lambdaClientBuilder).credentialsProvider(credentialsProviderArgumentCaptor.capture()); + final AwsCredentialsProvider actualCredentialsProvider = credentialsProviderArgumentCaptor.getValue(); + assertThat(actualCredentialsProvider, equalTo(awsCredentialsProvider)); + + final ArgumentCaptor optionsArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsOptions.class); + verify(awsCredentialsSupplier).getProvider(optionsArgumentCaptor.capture()); + + final AwsCredentialsOptions actualCredentialsOptions = optionsArgumentCaptor.getValue(); + assertThat(actualCredentialsOptions.getRegion(), equalTo(region)); + assertThat(actualCredentialsOptions.getStsRoleArn(), equalTo(stsRoleArn)); + assertThat(actualCredentialsOptions.getStsHeaderOverrides(), equalTo(stsHeaderOverrides)); + } + } +} diff --git a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptionsTest.java b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptionsTest.java index 98437b49fe..ee69848dbe 100644 --- a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptionsTest.java +++ b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/common/config/ThresholdOptionsTest.java @@ -10,9 +10,12 @@ import org.junit.jupiter.api.Test; import org.opensearch.dataprepper.model.types.ByteCount; +import java.time.Duration; + class ThresholdOptionsTest { + private static final int DEFAULT_EVENT_COUNT = 10; private static final String DEFAULT_BYTE_CAPACITY = "3mb"; - private static final int DEFAULT_EVENT_COUNT = 0; + private static final Duration DEFAULT_EVENT_TIMEOUT = Duration.ofSeconds(10); @Test void test_default_byte_capacity_test() { @@ -22,7 +25,7 @@ void test_default_byte_capacity_test() { @Test void test_get_event_collection_duration_test() { - assertThat(new ThresholdOptions().getEventCollectTimeOut(), equalTo(null)); + assertThat(new ThresholdOptions().getEventCollectTimeOut(), equalTo(DEFAULT_EVENT_TIMEOUT)); } @Test diff --git a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorConfigTest.java b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorConfigTest.java new file mode 100644 index 0000000000..3f94ccf6fe --- /dev/null +++ b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorConfigTest.java @@ -0,0 +1,32 @@ +package org.opensearch.dataprepper.plugins.lambda.processor; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import org.junit.jupiter.api.Test; +import software.amazon.awssdk.regions.Region; + +public class LambdaProcessorConfigTest { + + public static final int DEFAULT_MAX_RETRIES = 3; + private final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.USE_PLATFORM_LINE_BREAKS)); + + @Test + void lambda_processor_default_max_connection_retries_test() { + assertThat(new LambdaProcessorConfig().getMaxConnectionRetries(), equalTo(DEFAULT_MAX_RETRIES)); + } + + @Test + public void testAwsAuthenticationOptionsNotNull() throws JsonProcessingException { + final String config = " function_name: test_function\n" + " aws:\n" + " region: ap-south-1\n" + " sts_role_arn: arn:aws:iam::524239988912:role/app-test\n" + " sts_header_overrides: {\"test\":\"test\"}\n" + " max_retries: 10\n"; + final LambdaProcessorConfig lambdaProcessorConfig = objectMapper.readValue(config, LambdaProcessorConfig.class); + + assertThat(lambdaProcessorConfig.getMaxConnectionRetries(), equalTo(10)); + assertThat(lambdaProcessorConfig.getAwsAuthenticationOptions().getAwsRegion(), equalTo(Region.AP_SOUTH_1)); + assertThat(lambdaProcessorConfig.getAwsAuthenticationOptions().getAwsStsRoleArn(), equalTo("arn:aws:iam::524239988912:role/app-test")); + assertThat(lambdaProcessorConfig.getAwsAuthenticationOptions().getAwsStsHeaderOverrides().get("test"), equalTo("test")); + } +} \ No newline at end of file diff --git a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorTest.java b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorTest.java new file mode 100644 index 0000000000..c5ca12117b --- /dev/null +++ b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/processor/LambdaProcessorTest.java @@ -0,0 +1,290 @@ +package org.opensearch.dataprepper.plugins.lambda.processor; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.Timer; +import org.junit.jupiter.api.AfterEach; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.types.ByteCount; +import org.opensearch.dataprepper.plugins.lambda.common.accumlator.Buffer; +import org.opensearch.dataprepper.plugins.lambda.common.accumlator.BufferFactory; +import org.opensearch.dataprepper.plugins.lambda.common.client.LambdaClientFactory; +import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.ThresholdOptions; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.LAMBDA_LATENCY_METRIC; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.REQUEST_PAYLOAD_SIZE; +import static org.opensearch.dataprepper.plugins.lambda.processor.LambdaProcessor.RESPONSE_PAYLOAD_SIZE; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.lambda.LambdaClient; +import software.amazon.awssdk.services.lambda.model.InvokeRequest; +import software.amazon.awssdk.services.lambda.model.InvokeResponse; + +import java.io.IOException; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +@ExtendWith(MockitoExtension.class) +public class LambdaProcessorTest { + private static final String RESPONSE_PAYLOAD = "{\"k1\":\"v1\",\"k2\":\"v2\"}"; + private static MockedStatic lambdaClientFactoryMockedStatic; + private final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.USE_PLATFORM_LINE_BREAKS)); + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private ExpressionEvaluator expressionEvaluator; + + @Mock + private LambdaProcessorConfig lambdaProcessorConfig; + + @Mock + private AwsCredentialsSupplier awsCredentialsSupplier; + + @Mock + private LambdaClient lambdaClient; + + @Spy + private BufferFactory bufferFactory; + + @Mock + private Buffer buffer; + + @Mock + private Counter numberOfRecordsSuccessCounter; + + @Mock + private Counter numberOfRecordsFailedCounter; + + @Mock + private Counter numberOfRecordsDroppedCounter; + + @Mock + private Timer lambdaLatencyMetric; + + @Mock + private AtomicLong requestPayload; + + @Mock + private AtomicLong responsePayload; + + private LambdaProcessor createObjectUnderTest() { + return new LambdaProcessor(pluginMetrics, lambdaProcessorConfig, awsCredentialsSupplier, expressionEvaluator); + } + + @BeforeEach + public void setUp() throws IOException { + MockitoAnnotations.openMocks(this); + + BatchOptions batchOptions = mock(BatchOptions.class); + ThresholdOptions thresholdOptions = mock(ThresholdOptions.class); + AwsAuthenticationOptions awsAuthenticationOptions = mock(AwsAuthenticationOptions.class); + + lenient().when(lambdaProcessorConfig.getFunctionName()).thenReturn("test-function1"); + lenient().when(lambdaProcessorConfig.getMaxConnectionRetries()).thenReturn(3); + lenient().when(lambdaProcessorConfig.getInvocationType()).thenReturn("request-response"); + lenient().when(lambdaProcessorConfig.getPayloadModel()).thenReturn("batch-event"); + + lenient().when(thresholdOptions.getEventCount()).thenReturn(10); + lenient().when(thresholdOptions.getMaximumSize()).thenReturn(ByteCount.ofBytes(6)); + lenient().when(thresholdOptions.getEventCollectTimeOut()).thenReturn(Duration.ofSeconds(5)); + + lenient().when(batchOptions.getKeyName()).thenReturn("events"); + lenient().when(batchOptions.getThresholdOptions()).thenReturn(thresholdOptions); + lenient().when(lambdaProcessorConfig.getBatchOptions()).thenReturn(batchOptions); + + lenient().when(lambdaProcessorConfig.getAwsAuthenticationOptions()).thenReturn(awsAuthenticationOptions); + lenient().when(awsAuthenticationOptions.getAwsRegion()).thenReturn(Region.of("test-region")); + + lenient().when(pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS)).thenReturn(numberOfRecordsDroppedCounter); + lenient().when(pluginMetrics.counter(NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED)).thenReturn(numberOfRecordsFailedCounter); + lenient().when(pluginMetrics.timer(LAMBDA_LATENCY_METRIC)).thenReturn(lambdaLatencyMetric); + lenient().when(pluginMetrics.gauge(eq(REQUEST_PAYLOAD_SIZE), any(AtomicLong.class))).thenReturn(requestPayload); + lenient().when(pluginMetrics.gauge(eq(RESPONSE_PAYLOAD_SIZE), any(AtomicLong.class))).thenReturn(responsePayload); + + InvokeResponse resp = InvokeResponse.builder().statusCode(200).payload(SdkBytes.fromUtf8String(RESPONSE_PAYLOAD)).build(); + lambdaClientFactoryMockedStatic = Mockito.mockStatic(LambdaClientFactory.class); + when(LambdaClientFactory.createLambdaClient(any(AwsAuthenticationOptions.class), + eq(3), + any(AwsCredentialsSupplier.class))).thenReturn(lambdaClient); + lenient().when(lambdaClient.invoke(any(InvokeRequest.class))).thenReturn(resp); + try { + lenient().when(bufferFactory.getBuffer(lambdaClient, lambdaProcessorConfig.getFunctionName(), "RequestResponse")).thenReturn(buffer); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + public void cleanup() { + lambdaClientFactoryMockedStatic.close(); + } + + @Test + public void testDoExecuteWithEmptyRecords() { + Collection> records = Collections.emptyList(); + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + Collection> result = lambdaProcessor.doExecute(records); + + assertTrue(result.isEmpty()); + } + + @Test + public void testDoExecute() throws JsonProcessingException { + Event event = JacksonEvent.builder().withEventType("event").withData("{\"status\":true}").build(); + Record record = new Record<>(event); + Collection> records = List.of(record); + + InvokeResponse invokeResponse = InvokeResponse.builder().statusCode(200).payload(SdkBytes.fromUtf8String(RESPONSE_PAYLOAD)).build(); + + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + Collection> resultRecords = lambdaProcessor.doExecute(records); + + assertEquals(1, resultRecords.size()); + Record resultRecord = resultRecords.iterator().next(); + + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode responseJsonNode = objectMapper.readTree(RESPONSE_PAYLOAD); + assertEquals(responseJsonNode, resultRecord.getData().getJsonNode()); + } + + @Test + public void testDoExecute_withException() { + List> records = new ArrayList<>(); + Event event = mock(Event.class); + records.add(new Record<>(event)); + + lenient().when(buffer.getOutputStream()).thenThrow(new RuntimeException("Test exception")); + + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + Collection> result = lambdaProcessor.doExecute(records); + + assertEquals(1, result.size()); + verify(buffer, times(0)).flushToLambdaSync(); + } + + @Test + public void testFlushToLambdaIfNeeded_withThresholdNotExceeded() throws Exception { + lenient().when(buffer.getSize()).thenReturn(100L); + lenient().when(buffer.getEventCount()).thenReturn(1); + lenient().when(buffer.getDuration()).thenReturn(Duration.ofSeconds(1)); + + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + List> records = mock(ArrayList.class); + lambdaProcessor.flushToLambdaIfNeeded(records); + verify(buffer, times(0)).flushToLambdaSync(); + verify(records, times(0)).add(any(Record.class)); + } + + @Test + public void testConvertLambdaResponseToEvent_withInvalidJsonPayload() { + // Arrange + // Using an invalid JSON string to trigger the JSON parsing exception + String invalidJsonPayload = "{ invalid json }"; + InvokeResponse response = InvokeResponse.builder() + .statusCode(200) + .payload(SdkBytes.fromUtf8String(invalidJsonPayload)) + .build(); + + lenient().when(lambdaClient.invoke(any(InvokeRequest.class))).thenReturn(response); + + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + + // Act and Assert + RuntimeException exception = assertThrows(RuntimeException.class, () -> { + lambdaProcessor.convertLambdaResponseToEvent(response); + }); + // Asserting the message thrown by the RuntimeException + assertEquals("Error converting Lambda response to Event", exception.getMessage()); + } + + + @Test + public void testDoExecute_withNonSuccessfulStatusCode() { + InvokeResponse response = InvokeResponse.builder().statusCode(500).payload(SdkBytes.fromUtf8String(RESPONSE_PAYLOAD)).build(); + lenient().when(lambdaClient.invoke(any(InvokeRequest.class))).thenReturn(response); + + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + + List> records = new ArrayList<>(); + Event event = mock(Event.class); + records.add(new Record<>(event)); + List> resultRecords = (List>) lambdaProcessor.doExecute(records); + + verify(lambdaClient, times(1)).invoke(any(InvokeRequest.class)); + + //event should be dropped on failure + assertEquals(resultRecords.size(), 0); + verify(numberOfRecordsFailedCounter, times(1)).increment(1); + //check if buffer is reset + assertEquals(buffer.getSize(), 0); + } + + @Test + public void testConvertLambdaResponseToEvent() throws JsonProcessingException { + InvokeResponse response = InvokeResponse.builder().statusCode(200).payload(SdkBytes.fromUtf8String(RESPONSE_PAYLOAD)).build(); + lenient().when(lambdaClient.invoke(any(InvokeRequest.class))).thenReturn(response); + + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + Event eventResponse = lambdaProcessor.convertLambdaResponseToEvent(response); + + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(RESPONSE_PAYLOAD); + Event event = JacksonEvent.builder().withEventType("event").withData(jsonNode).build(); + assertEquals(event.getJsonNode(), eventResponse.getJsonNode()); + } + + @Test + public void testDoExecute_WithConfig() throws JsonProcessingException { + final String config = " function_name: test_function\n" + " invocation_type: request-response\n"+ " payload_model: single-event\n" + " aws:\n" + " region: us-east-1\n" + " sts_role_arn: arn:aws:iam::524239988912:role/app-test\n" + " sts_header_overrides: {\"test\":\"test\"}\n" + " max_retries: 3\n"; + + this.lambdaProcessorConfig = objectMapper.readValue(config, LambdaProcessorConfig.class); + + Event event = JacksonEvent.builder().withEventType("event").withData("{\"status\":true}").build(); + Record record = new Record<>(event); + Collection> records = List.of(record); + + InvokeResponse invokeResponse = InvokeResponse.builder().statusCode(200).payload(SdkBytes.fromUtf8String(RESPONSE_PAYLOAD)).build(); + + LambdaProcessor lambdaProcessor = createObjectUnderTest(); + Collection> resultRecords = lambdaProcessor.doExecute(records); + verify(lambdaClient, times(1)).invoke(any(InvokeRequest.class)); + assertEquals(resultRecords.size(), 1); + } +} diff --git a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaClientFactoryTest.java b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaClientFactoryTest.java deleted file mode 100644 index 9ed5c71fb2..0000000000 --- a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaClientFactoryTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ -package org.opensearch.dataprepper.plugins.lambda.sink; - -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.ArgumentCaptor; -import static org.mockito.ArgumentMatchers.any; -import org.mockito.Mock; -import org.mockito.MockedStatic; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.mockStatic; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; -import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; -import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; -import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.regions.Region; -import software.amazon.awssdk.services.lambda.LambdaClient; -import software.amazon.awssdk.services.lambda.LambdaClientBuilder; - -import java.util.Map; -import java.util.UUID; - -@ExtendWith(MockitoExtension.class) -class LambdaClientFactoryTest { - @Mock - private LambdaSinkConfig lambdaSinkConfig; - @Mock - private AwsCredentialsSupplier awsCredentialsSupplier; - - @Mock - private AwsAuthenticationOptions awsAuthenticationOptions; - - @BeforeEach - void setUp() { - when(lambdaSinkConfig.getAwsAuthenticationOptions()).thenReturn(awsAuthenticationOptions); - } - - @Test - void createLambdaClient_with_real_LambdaClient() { - when(awsAuthenticationOptions.getAwsRegion()).thenReturn(Region.US_EAST_1); - final LambdaClient lambdaClient = LambdaClientFactory.createLambdaClient(lambdaSinkConfig, awsCredentialsSupplier); - - assertThat(lambdaClient, notNullValue()); - } - - @ParameterizedTest - @ValueSource(strings = {"us-east-1", "us-west-2", "eu-central-1"}) - void createlambdaClient_provides_correct_inputs(final String regionString) { - final Region region = Region.of(regionString); - final String stsRoleArn = UUID.randomUUID().toString(); - final Map stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); - when(awsAuthenticationOptions.getAwsRegion()).thenReturn(region); - when(awsAuthenticationOptions.getAwsStsRoleArn()).thenReturn(stsRoleArn); - when(awsAuthenticationOptions.getAwsStsHeaderOverrides()).thenReturn(stsHeaderOverrides); - - final AwsCredentialsProvider expectedCredentialsProvider = mock(AwsCredentialsProvider.class); - when(awsCredentialsSupplier.getProvider(any())).thenReturn(expectedCredentialsProvider); - - final LambdaClientBuilder lambdaClientBuilder = mock(LambdaClientBuilder.class); - when(lambdaClientBuilder.region(region)).thenReturn(lambdaClientBuilder); - when(lambdaClientBuilder.credentialsProvider(any())).thenReturn(lambdaClientBuilder); - when(lambdaClientBuilder.overrideConfiguration(any(ClientOverrideConfiguration.class))).thenReturn(lambdaClientBuilder); - try(final MockedStatic lambdaClientMockedStatic = mockStatic(LambdaClient.class)) { - lambdaClientMockedStatic.when(LambdaClient::builder) - .thenReturn(lambdaClientBuilder); - LambdaClientFactory.createLambdaClient(lambdaSinkConfig, awsCredentialsSupplier); - } - - final ArgumentCaptor credentialsProviderArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsProvider.class); - verify(lambdaClientBuilder).credentialsProvider(credentialsProviderArgumentCaptor.capture()); - - final AwsCredentialsProvider actualCredentialsProvider = credentialsProviderArgumentCaptor.getValue(); - - assertThat(actualCredentialsProvider, equalTo(expectedCredentialsProvider)); - - final ArgumentCaptor optionsArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsOptions.class); - verify(awsCredentialsSupplier).getProvider(optionsArgumentCaptor.capture()); - - final AwsCredentialsOptions actualCredentialsOptions = optionsArgumentCaptor.getValue(); - assertThat(actualCredentialsOptions.getRegion(), equalTo(region)); - assertThat(actualCredentialsOptions.getStsRoleArn(), equalTo(stsRoleArn)); - assertThat(actualCredentialsOptions.getStsHeaderOverrides(), equalTo(stsHeaderOverrides)); - } -} \ No newline at end of file diff --git a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceTest.java b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceTest.java index f8ca0f11ec..d9c02d09b7 100644 --- a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceTest.java +++ b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkServiceTest.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.Timer; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -15,15 +16,18 @@ import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.event.Event; @@ -39,7 +43,12 @@ import org.opensearch.dataprepper.plugins.lambda.common.accumlator.InMemoryBufferFactory; import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; import org.opensearch.dataprepper.plugins.lambda.common.config.BatchOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig; +import static org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig.BATCH_EVENT; import org.opensearch.dataprepper.plugins.lambda.common.config.ThresholdOptions; +import static org.opensearch.dataprepper.plugins.lambda.sink.LambdaSinkService.LAMBDA_LATENCY_METRIC; +import static org.opensearch.dataprepper.plugins.lambda.sink.LambdaSinkService.REQUEST_PAYLOAD_SIZE; +import static org.opensearch.dataprepper.plugins.lambda.sink.LambdaSinkService.RESPONSE_PAYLOAD_SIZE; import org.opensearch.dataprepper.plugins.lambda.sink.dlq.DlqPushHandler; import org.opensearch.dataprepper.plugins.lambda.sink.dlq.LambdaSinkFailedDlqData; import software.amazon.awssdk.awscore.exception.AwsServiceException; @@ -54,9 +63,11 @@ import java.time.Duration; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; public class LambdaSinkServiceTest { @@ -66,13 +77,14 @@ public class LambdaSinkServiceTest { public static final String maxSize = "1kb"; public static final String functionName = "testFunction"; public static final String invocationType = "event"; - public static final String batchKey ="lambda_batch_key"; + public static final String keyName ="lambda_batch_key"; public static final String config = " function_name: testFunction\n" + " aws:\n" + " region: us-east-1\n" + " sts_role_arn: arn:aws:iam::524239988912:role/app-test\n" + " sts_header_overrides: {\"test\":\"test\"}\n" + + " payload_model: single-event\n"+ " max_retries: 10\n"; private final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.USE_PLATFORM_LINE_BREAKS)); @@ -81,10 +93,14 @@ public class LambdaSinkServiceTest { private PluginMetrics pluginMetrics; private Counter numberOfRecordsSuccessCounter; private Counter numberOfRecordsFailedCounter; + private Timer lambdaLatencyMetric; + private AtomicLong requestPayload; + private AtomicLong responsePayload; private DlqPushHandler dlqPushHandler; private Buffer buffer; private BufferFactory bufferFactory; - + private OutputCodecContext outputCodecContext; + private ExpressionEvaluator expressionEvaluator; private InvokeResponse invokeResponse; @@ -97,46 +113,65 @@ public void setup() throws IOException { this.lambdaClient = mock(LambdaClient.class); this.pluginMetrics = mock(PluginMetrics.class); this.buffer = mock(InMemoryBuffer.class); + this.expressionEvaluator = mock(ExpressionEvaluator.class); this.lambdaSinkConfig = mock(LambdaSinkConfig.class); this.numberOfRecordsSuccessCounter = mock(Counter.class); this.numberOfRecordsFailedCounter = mock(Counter.class); + this.lambdaLatencyMetric = mock(Timer.class); + this.requestPayload = mock(AtomicLong.class); + this.responsePayload = mock(AtomicLong.class); this.dlqPushHandler = mock(DlqPushHandler.class); this.bufferFactory = mock(BufferFactory.class); + this.outputCodecContext = mock(OutputCodecContext.class); + when(lambdaSinkConfig.getInvocationType()).thenReturn(LambdaCommonConfig.EVENT); + when(lambdaSinkConfig.getPayloadModel()).thenReturn("single-event"); when(pluginMetrics.counter(LambdaSinkService.NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_SUCCESS)).thenReturn(numberOfRecordsSuccessCounter); when(pluginMetrics.counter(LambdaSinkService.NUMBER_OF_RECORDS_FLUSHED_TO_LAMBDA_FAILED)).thenReturn(numberOfRecordsFailedCounter); + lenient().when(pluginMetrics.timer(LAMBDA_LATENCY_METRIC)).thenReturn(lambdaLatencyMetric); + lenient().when(pluginMetrics.gauge(eq(REQUEST_PAYLOAD_SIZE), any(AtomicLong.class))).thenReturn(requestPayload); + lenient().when(pluginMetrics.gauge(eq(RESPONSE_PAYLOAD_SIZE), any(AtomicLong.class))).thenReturn(responsePayload); mockResponse = InvokeResponse.builder() .statusCode(200) // HTTP 200 for successful invocation .payload(SdkBytes.fromString("{\"key\": \"value\"}", java.nio.charset.StandardCharsets.UTF_8)) .build(); + } private LambdaSinkService createObjectUnderTest(LambdaSinkConfig lambdaSinkConfig) throws IOException { bufferFactory = new InMemoryBufferFactory(); buffer = bufferFactory.getBuffer(lambdaClient,functionName,invocationType); + when(outputCodecContext.getIncludeKeys()).thenReturn(Collections.emptyList()); + when(outputCodecContext.getExcludeKeys()).thenReturn(Collections.emptyList()); + when(outputCodecContext.getTagsTargetKey()).thenReturn(null); return new LambdaSinkService(lambdaClient, lambdaSinkConfig, pluginMetrics, mock(PluginFactory.class), mock(PluginSetting.class), - mock(OutputCodecContext.class), + outputCodecContext, mock(AwsCredentialsSupplier.class), dlqPushHandler, - bufferFactory); + bufferFactory, + expressionEvaluator); } private LambdaSinkService createObjectUnderTest(String config) throws IOException { this.lambdaSinkConfig = objectMapper.readValue(config, LambdaSinkConfig.class); bufferFactory = new InMemoryBufferFactory(); buffer = bufferFactory.getBuffer(lambdaClient,functionName,invocationType); + when(outputCodecContext.getIncludeKeys()).thenReturn(Collections.emptyList()); + when(outputCodecContext.getExcludeKeys()).thenReturn(Collections.emptyList()); + when(outputCodecContext.getTagsTargetKey()).thenReturn(null); return new LambdaSinkService(lambdaClient, lambdaSinkConfig, pluginMetrics, mock(PluginFactory.class), mock(PluginSetting.class), - mock(OutputCodecContext.class), + outputCodecContext, mock(AwsCredentialsSupplier.class), dlqPushHandler, - bufferFactory); + bufferFactory, + expressionEvaluator); } @Test @@ -172,44 +207,6 @@ public void lambda_sink_test_with_single_record_success_push_to_lambda() throws verify(numberOfRecordsSuccessCounter).increment(records.size()); } - @Test - public void lambda_sink_test_max_retires_works() throws IOException { - final String config = - " function_name: test_function\n" + - " aws:\n" + - " region: us-east-1\n" + - " sts_role_arn: arn:aws:iam::524239988912:role/app-test\n" + - " sts_header_overrides: {\"test\":\"test\"}\n" + - " max_retries: 3\n"; - this.buffer = mock(InMemoryBuffer.class); - when(lambdaClient.invoke(any(InvokeRequest.class))).thenThrow(AwsServiceException.class); - doNothing().when(dlqPushHandler).perform(any(PluginSetting.class), any(LambdaSinkFailedDlqData.class)); - - this.lambdaSinkConfig = objectMapper.readValue(config, LambdaSinkConfig.class); - bufferFactory = mock(BufferFactory.class); - buffer = mock(Buffer.class); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - when(buffer.getOutputStream()).thenReturn(byteArrayOutputStream); - when(bufferFactory.getBuffer(any(LambdaClient.class),any(),any())).thenReturn(buffer); - doThrow(AwsServiceException.class).when(buffer).flushToLambdaAsync(); - - LambdaSinkService lambdaSinkService = new LambdaSinkService(lambdaClient, - lambdaSinkConfig, - pluginMetrics, - mock(PluginFactory.class), - mock(PluginSetting.class), - mock(OutputCodecContext.class), - mock(AwsCredentialsSupplier.class), - dlqPushHandler, - bufferFactory); - - final Record eventRecord = new Record<>(JacksonEvent.fromMessage("{\"message\":\"c3f847eb-333a-49c3-a4cd-54715ad1b58a\"}")); - Collection> records = List.of(eventRecord); - lambdaSinkService.output(records); - - verify(buffer, times(3)).flushToLambdaAsync(); - } - @Test public void lambda_sink_test_dlq_works() throws IOException { final String config = @@ -218,6 +215,7 @@ public void lambda_sink_test_dlq_works() throws IOException { " region: us-east-1\n" + " sts_role_arn: arn:aws:iam::524239988912:role/app-test\n" + " sts_header_overrides: {\"test\":\"test\"}\n" + + " payload_model: single-event\n"+ " max_retries: 3\n"; when(lambdaClient.invoke(any(InvokeRequest.class))).thenThrow(AwsServiceException.class); @@ -237,17 +235,18 @@ public void lambda_sink_test_dlq_works() throws IOException { pluginMetrics, mock(PluginFactory.class), mock(PluginSetting.class), - mock(OutputCodecContext.class), + outputCodecContext, mock(AwsCredentialsSupplier.class), dlqPushHandler, - bufferFactory); + bufferFactory, + expressionEvaluator); final Record eventRecord = new Record<>(JacksonEvent.fromMessage("{\"message\":\"c3f847eb-333a-49c3-a4cd-54715ad1b58a\"}")); Collection> records = List.of(eventRecord); lambdaSinkService.output(records); - verify(buffer, times(3)).flushToLambdaAsync(); + verify(buffer, times(1)).flushToLambdaAsync(); verify(dlqPushHandler,times(1)).perform(any(PluginSetting.class),any(Object.class)); } @@ -274,6 +273,13 @@ void lambda_sink_service_test_output_with_single_record_ack_release() throws IOE final Event event = mock(Event.class); given(event.toJsonString()).willReturn("{\"message\":\"c3f847eb-333a-49c3-a4cd-54715ad1b58a\"}"); given(event.getEventHandle()).willReturn(mock(EventHandle.class)); + final Event.JsonStringBuilder jsonStringBuilder = mock(Event.JsonStringBuilder.class); // Mock the JsonStringBuilder + given(event.jsonBuilder()).willReturn(jsonStringBuilder); + given(jsonStringBuilder.includeKeys(outputCodecContext.getIncludeKeys())).willReturn(jsonStringBuilder); + given(jsonStringBuilder.excludeKeys(outputCodecContext.getExcludeKeys())).willReturn(jsonStringBuilder); + given(jsonStringBuilder.includeTags(outputCodecContext.getTagsTargetKey())).willReturn(jsonStringBuilder); + given(jsonStringBuilder.toJsonString()).willReturn("{\"message\":\"c3f847eb-333a-49c3-a4cd-54715ad1b58a\"}"); + final ArgumentCaptor invokeRequestCaptor = ArgumentCaptor.forClass(InvokeRequest.class); when(lambdaClient.invoke(any(InvokeRequest.class))).thenReturn(mockResponse); @@ -291,8 +297,9 @@ void lambda_sink_service_test_output_with_single_record_ack_release() throws IOE public void lambda_sink_test_batch_enabled() throws IOException { when(lambdaSinkConfig.getFunctionName()).thenReturn(functionName); when(lambdaSinkConfig.getMaxConnectionRetries()).thenReturn(maxRetries); + when(lambdaSinkConfig.getPayloadModel()).thenReturn(BATCH_EVENT); when(lambdaSinkConfig.getBatchOptions()).thenReturn(mock(BatchOptions.class)); - when(lambdaSinkConfig.getBatchOptions().getBatchKey()).thenReturn(batchKey); + when(lambdaSinkConfig.getBatchOptions().getKeyName()).thenReturn("lambda_batch_key"); when(lambdaSinkConfig.getBatchOptions().getThresholdOptions()).thenReturn(mock(ThresholdOptions.class)); when(lambdaSinkConfig.getBatchOptions().getThresholdOptions().getEventCount()).thenReturn(1); when(lambdaSinkConfig.getBatchOptions().getThresholdOptions().getMaximumSize()).thenReturn(ByteCount.parse(maxSize)); diff --git a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkTest.java b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkTest.java index 1842795e7c..010b7b3662 100644 --- a/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkTest.java +++ b/data-prepper-plugins/aws-lambda/src/test/java/org/opensearch/dataprepper/plugins/lambda/sink/LambdaSinkTest.java @@ -13,11 +13,13 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.model.configuration.PluginModel; import org.opensearch.dataprepper.model.configuration.PluginSetting; import org.opensearch.dataprepper.model.plugin.PluginFactory; import org.opensearch.dataprepper.model.sink.SinkContext; import org.opensearch.dataprepper.plugins.lambda.common.config.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.lambda.common.config.LambdaCommonConfig; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.lambda.LambdaClient; @@ -36,6 +38,7 @@ class LambdaSinkTest { private PluginFactory pluginFactory; private AwsCredentialsSupplier awsCredentialsSupplier; private SinkContext sinkContext; + private ExpressionEvaluator expressionEvaluator; @BeforeEach void setUp() { @@ -48,9 +51,11 @@ void setUp() { awsCredentialsSupplier = mock(AwsCredentialsSupplier.class); Map dlqMap = mock(HashMap.class); LambdaClient lambdaClient = mock(LambdaClient.class); + ExpressionEvaluator expressionEvaluator = mock(ExpressionEvaluator.class); - + when(lambdaSinkConfig.getPayloadModel()).thenReturn("single-event"); when(lambdaSinkConfig.getDlq()).thenReturn(pluginModel); + when(lambdaSinkConfig.getInvocationType()).thenReturn(LambdaCommonConfig.EVENT); when(pluginModel.getPluginSettings()).thenReturn(dlqMap); when(lambdaSinkConfig.getAwsAuthenticationOptions()).thenReturn(awsAuthenticationOptions); when(awsAuthenticationOptions.getAwsRegion()).thenReturn(Region.of(S3_REGION)); @@ -60,7 +65,7 @@ void setUp() { } private LambdaSink createObjectUnderTest() { - return new LambdaSink(pluginSetting, lambdaSinkConfig, pluginFactory, sinkContext, awsCredentialsSupplier); + return new LambdaSink(pluginSetting, lambdaSinkConfig, pluginFactory, sinkContext, awsCredentialsSupplier, expressionEvaluator); } @Test diff --git a/data-prepper-plugins/aws-plugin-api/src/main/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptions.java b/data-prepper-plugins/aws-plugin-api/src/main/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptions.java index f0be710968..1c0baea3bd 100644 --- a/data-prepper-plugins/aws-plugin-api/src/main/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptions.java +++ b/data-prepper-plugins/aws-plugin-api/src/main/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptions.java @@ -16,16 +16,20 @@ */ public class AwsCredentialsOptions { private static final AwsCredentialsOptions DEFAULT_OPTIONS = new AwsCredentialsOptions(); + private static final AwsCredentialsOptions DEFAULT_OPTIONS_WITH_DEFAULT_CREDS_PROVIDER = + AwsCredentialsOptions.builder().withUseDefaultCredentialsProvider(true).build(); private final String stsRoleArn; private final String stsExternalId; private final Region region; private final Map stsHeaderOverrides; + private final boolean useDefaultCredentialsProvider; private AwsCredentialsOptions(final Builder builder) { this.stsRoleArn = builder.stsRoleArn; this.stsExternalId = builder.stsExternalId; this.region = builder.region; this.stsHeaderOverrides = builder.stsHeaderOverrides != null ? new HashMap<>(builder.stsHeaderOverrides) : Collections.emptyMap(); + this.useDefaultCredentialsProvider = builder.useDefaultCredentialsProvider; } private AwsCredentialsOptions() { @@ -33,6 +37,7 @@ private AwsCredentialsOptions() { this.stsExternalId = null; this.region = null; this.stsHeaderOverrides = Collections.emptyMap(); + this.useDefaultCredentialsProvider = false; } /** @@ -49,6 +54,10 @@ public static AwsCredentialsOptions defaultOptions() { return DEFAULT_OPTIONS; } + public static AwsCredentialsOptions defaultOptionsWithDefaultCredentialsProvider() { + return DEFAULT_OPTIONS_WITH_DEFAULT_CREDS_PROVIDER; + } + public String getStsRoleArn() { return stsRoleArn; } @@ -65,6 +74,10 @@ public Map getStsHeaderOverrides() { return stsHeaderOverrides; } + public boolean isUseDefaultCredentialsProvider() { + return useDefaultCredentialsProvider; + } + /** * Builder class for {@link AwsCredentialsOptions}. */ @@ -73,6 +86,7 @@ public static class Builder { private String stsExternalId; private Region region; private Map stsHeaderOverrides = Collections.emptyMap(); + private boolean useDefaultCredentialsProvider = false; /** * Sets the STS role ARN to use. @@ -122,6 +136,17 @@ public Builder withStsHeaderOverrides(final Map stsHeaderOverrid return this; } + /** + * Configures whether to use default credentials. + * + * @param useDefaultCredentialsProvider + * @return The {@link Builder} for continuing to build + */ + public Builder withUseDefaultCredentialsProvider(final boolean useDefaultCredentialsProvider) { + this.useDefaultCredentialsProvider = useDefaultCredentialsProvider; + return this; + } + /** * Builds the {@link AwsCredentialsOptions}. * diff --git a/data-prepper-plugins/aws-plugin-api/src/test/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptionsTest.java b/data-prepper-plugins/aws-plugin-api/src/test/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptionsTest.java index 5f4200069e..c30ef133fc 100644 --- a/data-prepper-plugins/aws-plugin-api/src/test/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptionsTest.java +++ b/data-prepper-plugins/aws-plugin-api/src/test/java/org/opensearch/dataprepper/aws/api/AwsCredentialsOptionsTest.java @@ -19,6 +19,7 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.CoreMatchers.sameInstance; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertTrue; class AwsCredentialsOptionsTest { @Test @@ -150,4 +151,21 @@ void defaultOptions_returns_same_instance_on_multiple_calls() { assertThat(AwsCredentialsOptions.defaultOptions(), sameInstance(AwsCredentialsOptions.defaultOptions())); } + + + @Test + void with_DefaultRole() { + final AwsCredentialsOptions awsCredentialsOptionsWithDefaultCredentialsProvider + = AwsCredentialsOptions.defaultOptionsWithDefaultCredentialsProvider(); + + assertThat(awsCredentialsOptionsWithDefaultCredentialsProvider, notNullValue()); + assertThat(awsCredentialsOptionsWithDefaultCredentialsProvider.getStsRoleArn(), nullValue()); + assertTrue(awsCredentialsOptionsWithDefaultCredentialsProvider.isUseDefaultCredentialsProvider()); + } + + @Test + void defaultCredentialsOptions_returns_same_instance_on_multiple_calls() { + assertThat(AwsCredentialsOptions.defaultOptionsWithDefaultCredentialsProvider(), + sameInstance(AwsCredentialsOptions.defaultOptionsWithDefaultCredentialsProvider())); + } } \ No newline at end of file diff --git a/data-prepper-plugins/aws-plugin/src/main/java/org/opensearch/dataprepper/plugins/aws/CredentialsProviderFactory.java b/data-prepper-plugins/aws-plugin/src/main/java/org/opensearch/dataprepper/plugins/aws/CredentialsProviderFactory.java index 222051beab..5d014998d2 100644 --- a/data-prepper-plugins/aws-plugin/src/main/java/org/opensearch/dataprepper/plugins/aws/CredentialsProviderFactory.java +++ b/data-prepper-plugins/aws-plugin/src/main/java/org/opensearch/dataprepper/plugins/aws/CredentialsProviderFactory.java @@ -50,6 +50,10 @@ Region getDefaultRegion() { AwsCredentialsProvider providerFromOptions(final AwsCredentialsOptions credentialsOptions) { Objects.requireNonNull(credentialsOptions); + if (credentialsOptions.isUseDefaultCredentialsProvider()) { + return DefaultCredentialsProvider.create(); + } + if(credentialsOptions.getStsRoleArn() != null || defaultStsConfiguration.getAwsStsRoleArn() != null) { return createStsCredentials(credentialsOptions); } diff --git a/data-prepper-plugins/aws-plugin/src/test/java/org/opensearch/dataprepper/plugins/aws/AwsPluginIT.java b/data-prepper-plugins/aws-plugin/src/test/java/org/opensearch/dataprepper/plugins/aws/AwsPluginIT.java index a1e81198c6..d2daa7545e 100644 --- a/data-prepper-plugins/aws-plugin/src/test/java/org/opensearch/dataprepper/plugins/aws/AwsPluginIT.java +++ b/data-prepper-plugins/aws-plugin/src/test/java/org/opensearch/dataprepper/plugins/aws/AwsPluginIT.java @@ -157,6 +157,42 @@ void test_AwsPlugin_without_STS_role_and_with_default_role_uses_default_role() { assertThat(awsCredentialsProvider2, sameInstance(awsCredentialsProvider1)); } + @Test + void test_AwsPlugin_without_STS_role_and_without_default_role_uses_default_role() { + + createObjectUnderTest().apply(extensionPoints); + + final ArgumentCaptor> extensionProviderArgumentCaptor = ArgumentCaptor.forClass(ExtensionProvider.class); + verify(extensionPoints).addExtensionProvider(extensionProviderArgumentCaptor.capture()); + + final ExtensionProvider extensionProvider = extensionProviderArgumentCaptor.getValue(); + + final Optional optionalSupplier = extensionProvider.provideInstance(context); + assertThat(optionalSupplier, notNullValue()); + assertThat(optionalSupplier.isPresent(), equalTo(true)); + + final AwsCredentialsSupplier awsCredentialsSupplier = optionalSupplier.get(); + + final AwsCredentialsOptions awsCredentialsOptions1 = AwsCredentialsOptions.builder() + .withRegion(Region.US_EAST_1) + .withUseDefaultCredentialsProvider(true) + .build(); + + final AwsCredentialsProvider awsCredentialsProvider1 = awsCredentialsSupplier.getProvider(awsCredentialsOptions1); + + assertThat(awsCredentialsProvider1, instanceOf(DefaultCredentialsProvider.class)); + + final AwsCredentialsOptions awsCredentialsOptions2 = AwsCredentialsOptions.builder() + .withRegion(Region.US_EAST_1) + .withUseDefaultCredentialsProvider(true) + .build(); + + final AwsCredentialsProvider awsCredentialsProvider2 = awsCredentialsSupplier.getProvider(awsCredentialsOptions2); + + assertThat(awsCredentialsProvider2, instanceOf(DefaultCredentialsProvider.class)); + assertThat(awsCredentialsProvider2, sameInstance(awsCredentialsProvider1)); + } + private String createStsRole() { return String.format("arn:aws:iam::123456789012:role/%s", UUID.randomUUID()); } diff --git a/data-prepper-plugins/common/build.gradle b/data-prepper-plugins/common/build.gradle index cdfdeab9ef..1336f498c6 100644 --- a/data-prepper-plugins/common/build.gradle +++ b/data-prepper-plugins/common/build.gradle @@ -20,7 +20,7 @@ dependencies { implementation libs.reflections.core implementation 'io.micrometer:micrometer-core' implementation libs.parquet.common - implementation 'org.xerial.snappy:snappy-java:1.1.10.5' + implementation 'org.xerial.snappy:snappy-java:1.1.10.7' testImplementation project(':data-prepper-plugins:blocking-buffer') testImplementation project(':data-prepper-test-event') testImplementation libs.commons.io diff --git a/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/DelayProcessor.java b/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/DelayProcessor.java index b6681fea19..00429e9ac0 100644 --- a/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/DelayProcessor.java +++ b/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/DelayProcessor.java @@ -7,7 +7,9 @@ import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; import org.opensearch.dataprepper.model.processor.Processor; @@ -34,7 +36,7 @@ public Collection> execute(final Collection> records) { try { Thread.sleep(delayDuration.toMillis()); } catch (final InterruptedException ex) { - LOG.error("Interrupted during delay processor", ex); + LOG.error(NOISY, "Interrupted during delay processor", ex); } return records; } @@ -59,6 +61,7 @@ public void shutdown() { "Typically, you should use this only for testing, experimenting, and debugging.") public static class Configuration { @JsonProperty("for") + @JsonPropertyDescription("The duration of time to delay. Defaults to 1s.") private Duration delayFor = Duration.ofSeconds(1); public Duration getDelayFor() { diff --git a/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/StringProcessor.java b/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/StringProcessor.java index c3d908a8da..0502951137 100644 --- a/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/StringProcessor.java +++ b/data-prepper-plugins/common/src/main/java/org/opensearch/dataprepper/plugins/processor/StringProcessor.java @@ -8,6 +8,11 @@ import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; import org.opensearch.dataprepper.model.configuration.PluginSetting; @@ -15,9 +20,6 @@ import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.record.Record; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,8 +28,6 @@ import java.util.Map; import java.util.stream.Collectors; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - /** * A simple String implementation of {@link Processor} which generates new Records with uppercase or lowercase content. The current * simpler implementation does not handle errors (if any). @@ -43,9 +43,9 @@ public class StringProcessor implements Processor, Record> private final boolean upperCase; @JsonPropertyOrder - @JsonClassDescription("The `string_converter` processor converts a string to uppercase or lowercase.") + @JsonClassDescription("The string_converter processor converts a string to uppercase or lowercase.") public static class Configuration { - @JsonPropertyDescription("Whether to convert to uppercase (`true`) or lowercase (`false`).") + @JsonPropertyDescription("Whether to convert to uppercase (true) or lowercase (false).") private boolean upperCase = true; public boolean getUpperCase() { @@ -84,7 +84,13 @@ public Collection> execute(final Collection> records .build(); modifiedRecords.add(new Record<>(newRecordEvent)); } catch (JsonProcessingException e) { - LOG.error(EVENT, "Unable to process Event data: {}", eventJson, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Unable to process Event data: {}") + .addArgument(eventJson) + .setCause(e) + .log(); } } return modifiedRecords; diff --git a/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/csv/CsvOutputCodecConfig.java b/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/csv/CsvOutputCodecConfig.java index 133e11cad9..b27cdfd3eb 100644 --- a/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/csv/CsvOutputCodecConfig.java +++ b/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/csv/CsvOutputCodecConfig.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.Valid; import jakarta.validation.constraints.Size; @@ -13,14 +14,16 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `csv` processor parses comma-separated values (CSVs) from the event into columns.") +@JsonClassDescription("The csv codec parses comma-separated values (CSVs) content into events from that content.") public class CsvOutputCodecConfig { static final String DEFAULT_DELIMITER = ","; @JsonProperty("delimiter") + @JsonPropertyDescription("The character separating each column. Default value is ,.") private String delimiter = DEFAULT_DELIMITER; @JsonProperty("header") + @JsonPropertyDescription("User-specified names for the CSV columns.") private List header; @Valid @@ -32,10 +35,12 @@ public class CsvOutputCodecConfig { @Size(max = 0, message = "Header from file is not supported.") @JsonProperty("region") private String region; + @Valid @Size(max = 0, message = "Header from file is not supported.") @JsonProperty("bucket_name") private String bucketName; + @Valid @Size(max = 0, message = "Header from file is not supported.") @JsonProperty("fileKey") diff --git a/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessor.java b/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessor.java index 405b165ac5..b0dbf84577 100644 --- a/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessor.java +++ b/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessor.java @@ -5,7 +5,14 @@ package org.opensearch.dataprepper.plugins.processor.csv; +import com.fasterxml.jackson.databind.MappingIterator; +import com.fasterxml.jackson.dataformat.csv.CsvMapper; +import com.fasterxml.jackson.dataformat.csv.CsvParser; +import com.fasterxml.jackson.dataformat.csv.CsvSchema; +import io.micrometer.core.instrument.Counter; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -14,11 +21,6 @@ import org.opensearch.dataprepper.model.processor.AbstractProcessor; import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.record.Record; -import com.fasterxml.jackson.databind.MappingIterator; -import com.fasterxml.jackson.dataformat.csv.CsvMapper; -import com.fasterxml.jackson.dataformat.csv.CsvParser; -import com.fasterxml.jackson.dataformat.csv.CsvSchema; -import io.micrometer.core.instrument.Counter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,8 +30,6 @@ import java.util.List; import java.util.Objects; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - /** * Processor to parse CSV data in Events. * @@ -107,7 +107,13 @@ public Collection> doExecute(final Collection> recor } } catch (final IOException e) { csvInvalidEventsCounter.increment(); - LOG.error(EVENT, "An exception occurred while reading event [{}]", event, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("An exception occurred while reading event [{}]") + .addArgument(event) + .setCause(e) + .log(); } } return records; diff --git a/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessorConfig.java b/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessorConfig.java index e21968ebdf..3cb0d699e1 100644 --- a/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessorConfig.java +++ b/data-prepper-plugins/csv-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/csv/CsvProcessorConfig.java @@ -5,61 +5,67 @@ package org.opensearch.dataprepper.plugins.processor.csv; +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.constraints.NotBlank; import java.util.List; /** * Configuration class for {@link CsvProcessor}. */ + +@JsonPropertyOrder +@JsonClassDescription("The csv processor parses comma-separated values (CSVs) strings into structured data.") public class CsvProcessorConfig { static final String DEFAULT_SOURCE = "message"; static final String DEFAULT_DELIMITER = ","; static final String DEFAULT_QUOTE_CHARACTER = "\""; // double quote static final Boolean DEFAULT_DELETE_HEADERS = true; - @JsonProperty("source") - @JsonPropertyDescription("The field in the event that will be parsed. Default value is `message`.") + @JsonProperty(value = "source", defaultValue = DEFAULT_SOURCE) + @JsonPropertyDescription("The field in the event that will be parsed. Default value is message.") + @NotBlank private String source = DEFAULT_SOURCE; - @JsonProperty("delimiter") - @JsonPropertyDescription("The character separating each column. Default value is `,`.") + @JsonProperty(value = "delimiter", defaultValue = DEFAULT_DELIMITER) + @JsonPropertyDescription("The character separating each column. Default value is ,.") private String delimiter = DEFAULT_DELIMITER; @JsonProperty("delete_header") - @JsonPropertyDescription("If specified, the event header (`column_names_source_key`) is deleted after the event " + + @JsonPropertyDescription("If specified, the event header (column_names_source_key) is deleted after the event " + "is parsed. If there is no event header, no action is taken. Default value is true.") private Boolean deleteHeader = DEFAULT_DELETE_HEADERS; - @JsonProperty("quote_character") + @JsonProperty(value = "quote_character", defaultValue = DEFAULT_QUOTE_CHARACTER) @JsonPropertyDescription("The character used as a text qualifier for a single column of data. " + - "Default value is `\"`.") + "Default value is \".") private String quoteCharacter = DEFAULT_QUOTE_CHARACTER; @JsonProperty("column_names_source_key") @JsonPropertyDescription("The field in the event that specifies the CSV column names, which will be " + - "automatically detected. If there need to be extra column names, the column names are automatically " + - "generated according to their index. If `column_names` is also defined, the header in " + - "`column_names_source_key` can also be used to generate the event fields. " + + "automatically detected. If there are additional columns in the source, the column names are automatically " + + "generated according to column index. If column_names is also defined, the header in " + + "column_names_source_key can also be used to generate the event fields. " + "If too few columns are specified in this field, the remaining column names are automatically generated. " + "If too many column names are specified in this field, the CSV processor omits the extra column names.") private String columnNamesSourceKey; @JsonProperty("column_names") @JsonPropertyDescription("User-specified names for the CSV columns. " + - "Default value is `[column1, column2, ..., columnN]` if there are no columns of data in the CSV " + - "record and `column_names_source_key` is not defined. If `column_names_source_key` is defined, " + - "the header in `column_names_source_key` generates the event fields. If too few columns are specified " + + "Default value is [column1, column2, ..., columnN] if there are no columns of data in the CSV " + + "record and column_names_source_key is not defined. If column_names_source_key is defined, " + + "the header in column_names_source_key generates the event fields. If too few columns are specified " + "in this field, the remaining column names are automatically generated. " + "If too many column names are specified in this field, the CSV processor omits the extra column names.") private List columnNames; @JsonProperty("csv_when") - @JsonPropertyDescription("Allows you to specify a Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"`, that will be evaluated to determine whether " + - "the processor should be applied to the event.") + @JsonPropertyDescription("A conditional expression such as /some_key == \"test\". " + + "If specified, the csv processor will only run on events when the expression evaluates to true. ") private String csvWhen; @JsonPropertyDescription("If true, the configured source field will be deleted after the CSV data is parsed into separate fields.") diff --git a/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessor.java b/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessor.java index 328f8294bc..f2bf8cf187 100644 --- a/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessor.java +++ b/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessor.java @@ -8,6 +8,7 @@ import io.micrometer.core.instrument.Counter; import org.apache.commons.lang3.tuple.Pair; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -66,7 +67,9 @@ public DateProcessor(PluginMetrics pluginMetrics, final DateProcessorConfig date extractKeyAndFormatters(); if (dateProcessorConfig.getDateWhen() != null && (!expressionEvaluator.isValidExpressionStatement(dateProcessorConfig.getDateWhen()))) { - throw new InvalidPluginConfigurationException("date_when {} is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax"); + throw new InvalidPluginConfigurationException( + String.format("date_when \"%s\" is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", + dateProcessorConfig.getDateWhen())); } } @@ -102,7 +105,7 @@ public Collection> doExecute(Collection> records) { record.getData().put(dateProcessorConfig.getDestination(), zonedDateTime); } } catch (final Exception e) { - LOG.error("An exception occurred while attempting to process Event: ", e); + LOG.error(NOISY,"An exception occurred while attempting to process Event: ", e); } } diff --git a/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessorConfig.java b/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessorConfig.java index c6a4c471b7..c81a3a1ffb 100644 --- a/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessorConfig.java +++ b/data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessorConfig.java @@ -11,6 +11,9 @@ import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.AssertTrue; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; +import org.opensearch.dataprepper.model.annotations.ExampleValues; +import org.opensearch.dataprepper.model.annotations.ExampleValues.Example; import java.time.ZoneId; import java.util.List; @@ -18,10 +21,12 @@ import java.time.format.DateTimeFormatter; @JsonPropertyOrder -@JsonClassDescription("The `date` processor adds a default timestamp to an event, parses timestamp fields, " + +@JsonClassDescription("The date processor adds a default timestamp to an event, parses timestamp fields, " + "and converts timestamp information to the International Organization for Standardization (ISO) 8601 format. " + "This timestamp information can be used as an event timestamp.") public class DateProcessorConfig { + static final String MATCH_KEY = "match"; + static final String FROM_TIME_RECEIVED_KEY = "from_time_received"; static final Boolean DEFAULT_FROM_TIME_RECEIVED = false; static final Boolean DEFAULT_TO_ORIGINATION_METADATA = false; static final String DEFAULT_DESTINATION = "@timestamp"; @@ -32,15 +37,23 @@ public class DateProcessorConfig { public static class DateMatch { @JsonProperty("key") @JsonPropertyDescription("Represents the event key against which to match patterns. " + - "Required if `match` is configured. ") + "Required if match is configured.") private String key; + @JsonProperty("patterns") @JsonPropertyDescription("A list of possible patterns that the timestamp value of the key can have. The patterns " + - "are based on a sequence of letters and symbols. The `patterns` support all the patterns listed in the " + + "are based on a sequence of letters and symbols. The patterns support all the patterns listed in the " + "Java DateTimeFormatter (https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) reference. " + - "The timestamp value also supports `epoch_second`, `epoch_milli`, and `epoch_nano` values, " + + "To match ISO 8601 formatted strings, use, yyyy-MM-dd'T'HH:mm:ss.SSSXXX. " + + "To match Apache Common Log Format, use dd/MMM/yyyy:HH:mm:ss Z. " + + "The timestamp value also supports epoch_second, epoch_milli, and epoch_nano values, " + "which represent the timestamp as the number of seconds, milliseconds, and nanoseconds since the epoch. " + "Epoch values always use the UTC time zone.") + @ExampleValues({ + @Example(value = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", description = "Matches ISO-8601 formatted strings."), + @Example(value = "dd/MMM/yyyy:HH:mm:ss Z", description = "Matches Apache Common Log Format."), + @Example(value = "epoch_second", description = "Matches against strings that represent seconds since Unix epoch time.") + }) private List patterns; public DateMatch() { @@ -98,56 +111,79 @@ public static boolean isValidPattern(final String pattern) { } @JsonProperty("from_time_received") - @JsonPropertyDescription("When `true`, the timestamp from the event metadata, " + + @JsonPropertyDescription("When true, the timestamp from the event metadata, " + "which is the time at which the source receives the event, is added to the event data. " + - "This option cannot be defined at the same time as `match`. Default is `false`.") + "This option cannot be defined at the same time as match. Default is false.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = MATCH_KEY, allowedValues = {"null"}) + }) private Boolean fromTimeReceived = DEFAULT_FROM_TIME_RECEIVED; - @JsonProperty("to_origination_metadata") - @JsonPropertyDescription("When `true`, the matched time is also added to the event's metadata as an instance of " + - "`Instant`. Default is `false`.") - private Boolean toOriginationMetadata = DEFAULT_TO_ORIGINATION_METADATA; - @JsonProperty("match") @JsonPropertyDescription("The date match configuration. " + - "This option cannot be defined at the same time as `from_time_received`. There is no default value.") + "This option cannot be defined at the same time as from_time_received. " + + "The date processor will use the first pattern that matches each event's timestamp field. " + + "You must provide at least one pattern unless you have from_time_received.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = FROM_TIME_RECEIVED_KEY, allowedValues = {"null", "false"}) + }) private List match; @JsonProperty("destination") @JsonPropertyDescription("The field used to store the timestamp parsed by the date processor. " + - "Can be used with both `match` and `from_time_received`. Default is `@timestamp`.") + "Can be used with both match and from_time_received. Default is @timestamp.") private String destination = DEFAULT_DESTINATION; - @JsonProperty("output_format") - @JsonPropertyDescription("Determines the format of the timestamp added to an event. " + - "Default is `yyyy-MM-dd'T'HH:mm:ss.SSSXXX`.") + @JsonProperty(value = "output_format", defaultValue = DEFAULT_OUTPUT_FORMAT) + @JsonPropertyDescription("Determines the format of the timestamp added to an event.") + @ExampleValues({ + @Example(value = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", description = "Outputs ISO-8601 formatted strings."), + @Example(value = "dd/MMM/yyyy:HH:mm:ss Z", description = "Outputs in Apache Common Log Format.") + }) private String outputFormat = DEFAULT_OUTPUT_FORMAT; + @JsonProperty("to_origination_metadata") + @JsonPropertyDescription("When true, the matched time is also added to the event's metadata as an instance of " + + "Instant. Default is false.") + private Boolean toOriginationMetadata = DEFAULT_TO_ORIGINATION_METADATA; + @JsonProperty("source_timezone") @JsonPropertyDescription("The time zone used to parse dates, including when the zone or offset cannot be extracted " + "from the value. If the zone or offset are part of the value, then the time zone is ignored. " + "A list of all the available time zones is contained in the TZ database name column of " + - "(https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).") + "this table.") + @ExampleValues({ + @Example(value = "UTC", description = "Coordinated Universal Time (UTC)."), + @Example(value = "US/Pacific", description = "United States Pacific time zone.") + }) private String sourceTimezone = DEFAULT_SOURCE_TIMEZONE; @JsonProperty("destination_timezone") - @JsonPropertyDescription("The time zone used for storing the timestamp in the `destination` field. " + + @JsonPropertyDescription("The time zone used for storing the timestamp in the destination field. " + "A list of all the available time zones is contained in the TZ database name column of " + - "(https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).") + "this table.") + @ExampleValues({ + @Example(value = "UTC", description = "Coordinated Universal Time (UTC)."), + @Example(value = "US/Pacific", description = "United States Pacific time zone.") + }) private String destinationTimezone = DEFAULT_DESTINATION_TIMEZONE; @JsonProperty("locale") - @JsonPropertyDescription("The location used for parsing dates. Commonly used for parsing month names (`MMM`). " + - "The value can contain language, country, or variant fields in IETF BCP 47, such as `en-US`, " + + @JsonPropertyDescription("The location used for parsing dates. Commonly used for parsing month names (MMM). " + + "The value can contain language, country, or variant fields in IETF BCP 47, such as en-US, " + "or a string representation of the " + - "locale (https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html) object, such as `en_US`. " + - "A full list of locale fields, including language, country, and variant, can be found in " + - "(https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry). " + - "Default is `Locale.ROOT`.") + "locale object, such as en_US. " + + "A full list of locale fields, including language, country, and variant, can be found " + + "here." + + "Default is Locale.ROOT.") + @ExampleValues({ + @Example("en-US"), + @Example("fr-FR") + }) private String locale; @JsonProperty("date_when") - @JsonPropertyDescription("Specifies under what condition the `date` processor should perform matching. " + + @JsonPropertyDescription("Specifies under what condition the date processor should perform matching. " + "Default is no condition.") private String dateWhen; diff --git a/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressProcessorConfig.java b/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressProcessorConfig.java index be1238885c..a6b8202879 100644 --- a/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressProcessorConfig.java +++ b/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressProcessorConfig.java @@ -18,7 +18,7 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `decompress` processor decompresses any Base64-encoded " + +@JsonClassDescription("The decompress processor decompresses any Base64-encoded " + "compressed fields inside of an event.") public class DecompressProcessorConfig { @@ -28,19 +28,19 @@ public class DecompressProcessorConfig { @NotNull private List keys; - @JsonPropertyDescription("The type of decompression to use for the keys in the event. Only gzip is supported.") + @JsonPropertyDescription("The type of decompression to use for the keys in the event. Only gzip is supported.") @JsonProperty("type") @NotNull private DecompressionType decompressionType; - @JsonPropertyDescription("A conditional expression that determines when the decompress processor will run on certain events.") - @JsonProperty("decompress_when") - private String decompressWhen; - - @JsonPropertyDescription("A list of strings with which to tag events when the processor fails to decompress the keys inside an event. Defaults to _decompression_failure.") + @JsonPropertyDescription("A list of strings with which to tag events when the processor fails to decompress the keys inside an event. Defaults to _decompression_failure.") @JsonProperty("tags_on_failure") private List tagsOnFailure = List.of("_decompression_failure"); + @JsonPropertyDescription("A conditional expression, such as /is_compressed == true, that determines when the decompress processor will run on certain events.") + @JsonProperty("decompress_when") + private String decompressWhen; + @JsonIgnore private final EncodingType encodingType = EncodingType.BASE64; diff --git a/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionType.java b/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionType.java index 88f64a52e1..1b7c51d39a 100644 --- a/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionType.java +++ b/data-prepper-plugins/decompress-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionType.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper.plugins.processor.decompress; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import org.opensearch.dataprepper.model.codec.DecompressionEngine; import org.opensearch.dataprepper.plugins.codec.GZipDecompressionEngine; @@ -37,6 +38,11 @@ static DecompressionType fromOptionValue(final String option) { return OPTIONS_MAP.get(option); } + @JsonValue + public String getOptionValue() { + return option; + } + @Override public DecompressionEngine getDecompressionEngine() { return DECOMPRESSION_ENGINE_MAP.get(this.option); diff --git a/data-prepper-plugins/decompress-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionTypeTest.java b/data-prepper-plugins/decompress-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionTypeTest.java index 287e0cdb1d..7eccd3dbf8 100644 --- a/data-prepper-plugins/decompress-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionTypeTest.java +++ b/data-prepper-plugins/decompress-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/decompress/DecompressionTypeTest.java @@ -34,6 +34,12 @@ void getDecompressionEngine_returns_expected_DecompressionEngine(final Decompres assertThat(enumValue.getDecompressionEngine(), instanceOf(decompressionEngineClass)); } + @ParameterizedTest + @ArgumentsSource(EnumToStringNameArgumentsProvider.class) + void getOptionValue_returns_data_type_name(final DecompressionType decompressionType, final String optionValue) { + assertThat(decompressionType.getOptionValue(), equalTo(optionValue)); + } + private static class EnumToStringNameArgumentsProvider implements ArgumentsProvider { @Override public Stream provideArguments(final ExtensionContext context) { diff --git a/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessor.java b/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessor.java index cc93a9a4d1..d1ea5cfbd2 100644 --- a/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessor.java +++ b/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.dissect; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -26,8 +28,6 @@ import java.util.Map; import java.util.Objects; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "dissect", pluginType = Processor.class, pluginConfigurationType = DissectProcessorConfig.class) public class DissectProcessor extends AbstractProcessor, Record> { @@ -52,7 +52,9 @@ public DissectProcessor(PluginMetrics pluginMetrics, final DissectProcessorConfi if (dissectConfig.getDissectWhen() != null && (!expressionEvaluator.isValidExpressionStatement(dissectConfig.getDissectWhen()))) { - throw new InvalidPluginConfigurationException("dissect_when {} is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax"); + throw new InvalidPluginConfigurationException( + String.format("dissect_when \"%s\" is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", + dissectConfig.getDissectWhen())); } } @@ -72,7 +74,13 @@ public Collection> doExecute(Collection> records) { } } } catch (Exception ex){ - LOG.error(EVENT, "Error dissecting the event [{}] ", record.getData(), ex); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Error dissecting the event [{}]") + .addArgument(record.getData()) + .setCause(ex) + .log(); } } return records; diff --git a/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessorConfig.java b/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessorConfig.java index f1e7ce0686..233d0e8af2 100644 --- a/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessorConfig.java +++ b/data-prepper-plugins/dissect-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/dissect/DissectProcessorConfig.java @@ -10,23 +10,31 @@ import java.util.Map; @JsonPropertyOrder -@JsonClassDescription("The `dissect` processor extracts values from an event and maps them to individual fields " + - "based on user-defined `dissect` patterns. The processor is well suited for field extraction from log " + +@JsonClassDescription("The dissect processor extracts values from an event and maps them to individual fields " + + "based on user-defined dissect patterns. The processor is well suited for field extraction from log " + "messages with a known structure.") public class DissectProcessorConfig { @NotNull @JsonProperty("map") - @JsonPropertyDescription("Defines the `dissect` patterns for specific keys. For details on how to define fields " + - "in the `dissect` pattern, see (https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/processors/dissect/#field-notations).") + @JsonPropertyDescription("Defines the dissect patterns for specific keys. " + + "Each key is a field name, and the value is the dissect pattern to use for dissecting it. " + + "For details on how to define fields in the dissect pattern, see " + + "here. " + + "An example dissect pattern is %{Date} %{Time} %{Log_Type}: %{Message}, which will dissect into four fields.") private Map map; + @JsonProperty("target_types") - @JsonPropertyDescription("Specifies the data types for extract fields. Valid options are `integer`, " + - "`double`, `string`, `long`, `big_decimal`, and `boolean`. By default, all fields are of the `string` type.") + @JsonPropertyDescription("Specifies the data types for extract fields. " + + "Each key is a field name, and the value is the data type to use for that field. " + + "Valid data types are integer, double, string, long, big_decimal, and boolean. " + + "By default, all fields are treated as string.") private Map targetTypes; + @JsonProperty("dissect_when") - @JsonPropertyDescription("Specifies a condition for performing the `dissect` operation using a Data Prepper [conditional expression]" + - "(https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/). " + - "If specified, the `dissect` operation will only run when the expression evaluates to true.") + @JsonPropertyDescription("Specifies a condition for performing the dissect operation using a " + + "conditional expression. " + + "If specified, the dissect operation will only run when the expression evaluates to true. " + + "For example, /some_value == \"log\".") private String dissectWhen; public String getDissectWhen(){ diff --git a/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventProcessorConfig.java b/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventProcessorConfig.java index 4f79c6575f..58e842f113 100644 --- a/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventProcessorConfig.java +++ b/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventProcessorConfig.java @@ -13,16 +13,17 @@ import org.opensearch.dataprepper.model.event.HandleFailedEventsOption; @JsonPropertyOrder -@JsonClassDescription("The `drop_events` processor drops all the events that are passed into it.") +@JsonClassDescription("The drop_events processor conditionally drops events.") public class DropEventProcessorConfig { - @JsonPropertyDescription("Accepts a Data Prepper conditional expression string following the [Data Prepper Expression Syntax](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/). Configuring drop_events with drop_when: true drops all the events received.") + @JsonPropertyDescription("A conditional expression such as /log_type == \"DEBUG\". " + + "The drop_when processor will drop all events where the condition evaluates to true. Those events will not go to any further processors or sinks.") @JsonProperty("drop_when") @NotEmpty private String dropWhen; - @JsonPropertyDescription("Specifies how exceptions are handled when an exception occurs while evaluating an event. Default value is 'drop', which drops the event so that it is not sent to OpenSearch. Available options are 'drop', 'drop_silently', 'skip', and 'skip_silently'.") - @JsonProperty("handle_failed_events") + @JsonPropertyDescription("Specifies how exceptions are handled when an exception occurs while evaluating an event. Default value is skip, which drops the event so that it is not sent to further processors or sinks.") + @JsonProperty(value = "handle_failed_events", defaultValue = "skip") private HandleFailedEventsOption handleFailedEventsOption = HandleFailedEventsOption.SKIP; public String getDropWhen() { diff --git a/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventsProcessor.java b/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventsProcessor.java index 6196894beb..3355e15fde 100644 --- a/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventsProcessor.java +++ b/data-prepper-plugins/drop-events-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/drop/DropEventsProcessor.java @@ -36,7 +36,8 @@ public DropEventsProcessor( if (dropEventProcessorConfig.getDropWhen() != null && (!expressionEvaluator.isValidExpressionStatement(dropEventProcessorConfig.getDropWhen()))) { - throw new InvalidPluginConfigurationException("drop_when {} is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax"); + throw new InvalidPluginConfigurationException(String.format("drop_when \"%s\" is not a valid expression statement. " + + "See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", dropEventProcessorConfig.getDropWhen())); } whenCondition = new DropEventsWhenCondition.Builder() diff --git a/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/MetadataKeyAttributes.java b/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/MetadataKeyAttributes.java index 3fdcbe287d..4f0166581b 100644 --- a/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/MetadataKeyAttributes.java +++ b/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/MetadataKeyAttributes.java @@ -21,4 +21,5 @@ public class MetadataKeyAttributes { static final String DDB_STREAM_EVENT_NAME_METADATA_ATTRIBUTE = "dynamodb_event_name"; static final String EVENT_TABLE_NAME_METADATA_ATTRIBUTE = "table_name"; + static final String DDB_STREAM_EVENT_IS_TTL_DELETE = "ttl_delete"; } diff --git a/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/RecordConverter.java b/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/RecordConverter.java index ce57f118c4..dd4c6fe3e3 100644 --- a/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/RecordConverter.java +++ b/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/RecordConverter.java @@ -13,6 +13,8 @@ import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.plugins.source.dynamodb.model.TableInfo; +import software.amazon.awssdk.services.dynamodb.model.Identity; +import software.amazon.awssdk.services.dynamodb.model.OperationType; import java.math.BigDecimal; import java.time.Instant; @@ -26,6 +28,7 @@ import static org.opensearch.dataprepper.plugins.source.dynamodb.converter.MetadataKeyAttributes.PARTITION_KEY_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.dynamodb.converter.MetadataKeyAttributes.PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.dynamodb.converter.MetadataKeyAttributes.SORT_KEY_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.dynamodb.converter.MetadataKeyAttributes.DDB_STREAM_EVENT_IS_TTL_DELETE; /** * Base Record Processor definition. @@ -39,6 +42,8 @@ public abstract class RecordConverter { private final BufferAccumulator> bufferAccumulator; private final TableInfo tableInfo; + static final String TTL_USER_PRINCIPAL = "dynamodb.amazonaws.com"; + static final String TTL_USER_TYPE = "Service"; public RecordConverter(final BufferAccumulator> bufferAccumulator, TableInfo tableInfo) { this.bufferAccumulator = bufferAccumulator; @@ -76,6 +81,7 @@ void flushBuffer() throws Exception { * @param keys A map to hold the keys (partition key and sort key) * @param eventCreationTimeMillis Creation timestamp of the event * @param eventName Event name + * @param userIdentity UserIdentity for TTL based deletes * @throws Exception Exception if failed to write to buffer. */ public void addToBuffer(final AcknowledgementSet acknowledgementSet, @@ -83,7 +89,8 @@ public void addToBuffer(final AcknowledgementSet acknowledgementSet, final Map keys, final long eventCreationTimeMillis, final long eventVersionNumber, - final String eventName) throws Exception { + final String eventName, + final Identity userIdentity) throws Exception { Event event = JacksonEvent.builder() .withEventType(getEventType()) .withData(data) @@ -95,6 +102,7 @@ public void addToBuffer(final AcknowledgementSet acknowledgementSet, event.getEventHandle().setExternalOriginationTime(externalOriginationTime); event.getMetadata().setExternalOriginationTime(externalOriginationTime); } + EventMetadata eventMetadata = event.getMetadata(); eventMetadata.setAttribute(EVENT_TABLE_NAME_METADATA_ATTRIBUTE, tableInfo.getTableName()); @@ -103,6 +111,13 @@ public void addToBuffer(final AcknowledgementSet acknowledgementSet, eventMetadata.setAttribute(EVENT_NAME_BULK_ACTION_METADATA_ATTRIBUTE, mapStreamEventNameToBulkAction(eventName)); eventMetadata.setAttribute(EVENT_VERSION_FROM_TIMESTAMP, eventVersionNumber); + // Only set ttl_delete for stream events, which are of type REMOVE containing a userIdentity + final boolean isTtlDelete = OperationType.REMOVE.toString().equals(eventName) && + userIdentity != null && + TTL_USER_PRINCIPAL.equals(userIdentity.principalId()) && + TTL_USER_TYPE.equals(userIdentity.type()); + eventMetadata.setAttribute(DDB_STREAM_EVENT_IS_TTL_DELETE, isTtlDelete); + String partitionKey = getAttributeValue(keys, tableInfo.getMetadata().getPartitionKeyAttributeName()); eventMetadata.setAttribute(PARTITION_KEY_METADATA_ATTRIBUTE, partitionKey); @@ -123,7 +138,7 @@ public void addToBuffer(final AcknowledgementSet acknowledgementSet, final Map data, final long timestamp, final long eventVersionNumber) throws Exception { - addToBuffer(acknowledgementSet, data, data, timestamp, eventVersionNumber, null); + addToBuffer(acknowledgementSet, data, data, timestamp, eventVersionNumber, null, null); } private String mapStreamEventNameToBulkAction(final String streamEventName) { diff --git a/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/StreamRecordConverter.java b/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/StreamRecordConverter.java index d3fadf7217..85f7df05d2 100644 --- a/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/StreamRecordConverter.java +++ b/data-prepper-plugins/dynamodb-source/src/main/java/org/opensearch/dataprepper/plugins/source/dynamodb/converter/StreamRecordConverter.java @@ -98,7 +98,7 @@ public void writeToBuffer(final AcknowledgementSet acknowledgementSet, List newImage = Map.of(newImageKey, AttributeValue.builder().s(newImageValue).build()); final Map oldImage = Map.of(oldImageKey, AttributeValue.builder().s(oldImageValue).build()); - List records = Collections.singletonList(buildRecord(Instant.now(), newImage, oldImage, OperationType.REMOVE)); + List records = Collections.singletonList(buildRecord(Instant.now(), newImage, oldImage, OperationType.REMOVE, null)); final ArgumentCaptor recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); software.amazon.awssdk.services.dynamodb.model.Record record = records.get(0); final StreamRecordConverter objectUnderTest = new StreamRecordConverter(bufferAccumulator, tableInfo, pluginMetrics, streamConfig); @@ -397,7 +403,7 @@ void remove_record_with_use_old_image_on_delete_with_no_new_image_found_uses_new final String newImageValue = UUID.randomUUID().toString(); final Map newImage = Map.of(newImageKey, AttributeValue.builder().s(newImageValue).build()); - List records = Collections.singletonList(buildRecord(Instant.now(), newImage, null, OperationType.REMOVE)); + List records = Collections.singletonList(buildRecord(Instant.now(), newImage, null, OperationType.REMOVE, null)); final ArgumentCaptor recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); software.amazon.awssdk.services.dynamodb.model.Record record = records.get(0); final StreamRecordConverter objectUnderTest = new StreamRecordConverter(bufferAccumulator, tableInfo, pluginMetrics, streamConfig); @@ -442,7 +448,7 @@ void remove_record_without_use_old_image_on_delete_uses_new_image() throws Excep final Map newImage = Map.of(newImageKey, AttributeValue.builder().s(newImageValue).build()); final Map oldImage = Map.of(oldImageKey, AttributeValue.builder().s(oldImageValue).build()); - List records = Collections.singletonList(buildRecord(Instant.now(), newImage, oldImage, OperationType.REMOVE)); + List records = Collections.singletonList(buildRecord(Instant.now(), newImage, oldImage, OperationType.REMOVE, null)); final ArgumentCaptor recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); software.amazon.awssdk.services.dynamodb.model.Record record = records.get(0); final StreamRecordConverter objectUnderTest = new StreamRecordConverter(bufferAccumulator, tableInfo, pluginMetrics, streamConfig); @@ -476,6 +482,72 @@ void remove_record_without_use_old_image_on_delete_uses_new_image() throws Excep verify(bytesProcessedSummary).record(record.dynamodb().sizeBytes()); } + @Test + void test_writeSingleRecordToBuffer_with_userIdentity() throws Exception { + + when(streamConfig.getStreamViewForRemoves()).thenReturn(StreamViewType.OLD_IMAGE); + + final Identity userIdentity = Identity.builder() + .principalId(principalId) + .type(userIdentityType) + .build(); + + final String newImageKey = UUID.randomUUID().toString(); + final String newImageValue = UUID.randomUUID().toString(); + + final Map newImage = Map.of(newImageKey, AttributeValue.builder().s(newImageValue).build()); + List records = Collections.singletonList(buildRecord(Instant.now(), newImage, null, OperationType.REMOVE, userIdentity)); + final ArgumentCaptor recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + software.amazon.awssdk.services.dynamodb.model.Record record = records.get(0); + final StreamRecordConverter objectUnderTest = new StreamRecordConverter(bufferAccumulator, tableInfo, pluginMetrics, streamConfig); + doNothing().when(bufferAccumulator).add(recordArgumentCaptor.capture()); + + objectUnderTest.writeToBuffer(null, records); + + verify(bufferAccumulator).add(any(Record.class)); + verify(bufferAccumulator).flush(); + verify(changeEventSuccessCounter).increment(anyDouble()); + assertThat(recordArgumentCaptor.getValue().getData(), notNullValue()); + JacksonEvent event = (JacksonEvent) recordArgumentCaptor.getValue().getData(); + + assertThat(event.getMetadata(), notNullValue()); + assertThat(event.getMetadata().getAttribute(DDB_STREAM_EVENT_IS_TTL_DELETE), equalTo(Boolean.TRUE)); + + } + + @Test + void test_writeSingleRecordToBuffer_with_wrong_userIdentity() throws Exception { + + when(streamConfig.getStreamViewForRemoves()).thenReturn(StreamViewType.OLD_IMAGE); + + final Identity userIdentity = Identity.builder() + .principalId("lambda.amazonaws.com") + .type(userIdentityType) + .build(); + + final String newImageKey = UUID.randomUUID().toString(); + final String newImageValue = UUID.randomUUID().toString(); + + final Map newImage = Map.of(newImageKey, AttributeValue.builder().s(newImageValue).build()); + List records = Collections.singletonList(buildRecord(Instant.now(), newImage, null, OperationType.REMOVE, userIdentity)); + final ArgumentCaptor recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + software.amazon.awssdk.services.dynamodb.model.Record record = records.get(0); + final StreamRecordConverter objectUnderTest = new StreamRecordConverter(bufferAccumulator, tableInfo, pluginMetrics, streamConfig); + doNothing().when(bufferAccumulator).add(recordArgumentCaptor.capture()); + + objectUnderTest.writeToBuffer(null, records); + + verify(bufferAccumulator).add(any(Record.class)); + verify(bufferAccumulator).flush(); + verify(changeEventSuccessCounter).increment(anyDouble()); + assertThat(recordArgumentCaptor.getValue().getData(), notNullValue()); + JacksonEvent event = (JacksonEvent) recordArgumentCaptor.getValue().getData(); + + assertThat(event.getMetadata(), notNullValue()); + assertThat(event.getMetadata().getAttribute(DDB_STREAM_EVENT_IS_TTL_DELETE), equalTo(Boolean.FALSE)); + + } + private List buildRecords(int count, final Instant creationTime) { return buildRecords(count, creationTime, Collections.emptyMap()); } @@ -486,20 +558,34 @@ private List buildRecords final Map additionalData) { List records = new ArrayList<>(); for (int i = 0; i < count; i++) { - records.add(buildRecord(creationTime, additionalData, null, OperationType.INSERT)); + records.add(buildRecord(creationTime, additionalData, null, OperationType.INSERT, null)); + } + + return records; + } + + private List buildRecords( + int count, + final Instant creationTime, + final Map additionalData, + final Identity userIdentity) { + List records = new ArrayList<>(); + for (int i = 0; i < count; i++) { + records.add(buildRecord(creationTime, additionalData, null, OperationType.INSERT, userIdentity)); } return records; } private software.amazon.awssdk.services.dynamodb.model.Record buildRecord(final Instant creationTime) { - return buildRecord(creationTime, Collections.emptyMap(), null, OperationType.INSERT); + return buildRecord(creationTime, Collections.emptyMap(), null, OperationType.INSERT, null); } private software.amazon.awssdk.services.dynamodb.model.Record buildRecord(final Instant creationTime, Map additionalData, Map oldImage, - final OperationType operationType) { + final OperationType operationType, + final Identity userIdentity) { Map keysData = Map.of( partitionKeyAttrName, AttributeValue.builder().s(UUID.randomUUID().toString()).build(), sortKeyAttrName, AttributeValue.builder().s(UUID.randomUUID().toString()).build()); @@ -526,6 +612,7 @@ private software.amazon.awssdk.services.dynamodb.model.Record buildRecord(final software.amazon.awssdk.services.dynamodb.model.Record record = software.amazon.awssdk.services.dynamodb.model.Record.builder() .dynamodb(streamRecord) .eventName(operationType) + .userIdentity(userIdentity) .build(); return record; } diff --git a/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessor.java b/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessor.java index 0e22a6db10..e59ee7e7a5 100644 --- a/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessor.java +++ b/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessor.java @@ -7,6 +7,7 @@ import com.github.wnameless.json.flattener.JsonFlattener; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -44,7 +45,9 @@ public FlattenProcessor(final PluginMetrics pluginMetrics, final FlattenProcesso if (config.getFlattenWhen() != null && (!expressionEvaluator.isValidExpressionStatement(config.getFlattenWhen()))) { - throw new InvalidPluginConfigurationException("flatten_when {} is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax"); + throw new InvalidPluginConfigurationException( + String.format("flatten_when \"%s\" is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", + config.getFlattenWhen())); } } @@ -87,7 +90,7 @@ public Collection> doExecute(final Collection> recor updateEvent(recordEvent, flattenedJson); } catch (Exception e) { - LOG.error("Fail to perform flatten operation", e); + LOG.error(NOISY, "Fail to perform flatten operation", e); recordEvent.getMetadata().addTags(config.getTagsOnFailure()); } finally { // Add temporarily deleted fields back diff --git a/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessorConfig.java b/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessorConfig.java index f3fc6326ee..6da6e5f642 100644 --- a/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessorConfig.java +++ b/data-prepper-plugins/flatten-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/flatten/FlattenProcessorConfig.java @@ -12,57 +12,62 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotNull; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; import java.util.ArrayList; import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `flatten` processor transforms nested objects inside of events into flattened structures.") +@JsonClassDescription("The flatten processor transforms nested objects inside of events into flattened structures.") public class FlattenProcessorConfig { + static final String REMOVE_LIST_INDICES_KEY = "remove_list_indices"; private static final List DEFAULT_EXCLUDE_KEYS = new ArrayList<>(); @NotNull @JsonProperty("source") - @JsonPropertyDescription("The source key on which to perform the operation. If set to an empty string (`\"\"`), " + + @JsonPropertyDescription("The source key on which to perform the operation. If set to an empty string (\"\"), " + "then the processor uses the root of the event as the source.") private String source; @NotNull @JsonProperty("target") - @JsonPropertyDescription("The target key to put into the flattened fields. If set to an empty string (`\"\"`), " + + @JsonPropertyDescription("The target key to put into the flattened fields. If set to an empty string (\"\") " + "then the processor uses the root of the event as the target.") private String target; @JsonProperty("remove_processed_fields") - @JsonPropertyDescription("When `true`, the processor removes all processed fields from the source. Default is `false`.") + @JsonPropertyDescription("When true, the processor removes all processed fields from the source. " + + "The default is false which leaves the source fields.") private boolean removeProcessedFields = false; - @JsonProperty("remove_list_indices") - @JsonPropertyDescription("When `true`, the processor converts the fields from the source map into lists and " + - "puts the lists into the target field. Default is `false`.") + @JsonProperty(REMOVE_LIST_INDICES_KEY) + @JsonPropertyDescription("When true, the processor converts the fields from the source map into lists and " + + "puts the lists into the target field. Default is false.") private boolean removeListIndices = false; @JsonProperty("remove_brackets") - @JsonPropertyDescription("When `true`, the processor also removes brackets around the indices. Can only be " + - "set to `true` when `remove_list_indices` is `true`.") + @JsonPropertyDescription("When true, the processor also removes brackets around the indices. Can only be " + + "set to true when remove_list_indices is true.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = REMOVE_LIST_INDICES_KEY, allowedValues = {"true"}) + }) private boolean removeBrackets = false; @JsonProperty("exclude_keys") @JsonPropertyDescription("The keys from the source field that should be excluded from processing. " + - "Default is an empty list (`[]`).") + "By default no keys are excluded.") private List excludeKeys = DEFAULT_EXCLUDE_KEYS; - @JsonProperty("flatten_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that determines whether the `flatten` processor will be run on the " + - "event. Default is `null`, which means that all events will be processed unless otherwise stated.") - private String flattenWhen; - @JsonProperty("tags_on_failure") @JsonPropertyDescription("A list of tags to add to the event metadata when the event fails to process.") private List tagsOnFailure; + @JsonProperty("flatten_when") + @JsonPropertyDescription("A conditional expression such as /some_key == \"test\". " + + "If specified, the flatten processor will only run on events when the expression evaluates to true. ") + private String flattenWhen; + public String getSource() { return source; } diff --git a/data-prepper-plugins/geoip-processor/build.gradle b/data-prepper-plugins/geoip-processor/build.gradle index d1ebc0c971..10398d6cc1 100644 --- a/data-prepper-plugins/geoip-processor/build.gradle +++ b/data-prepper-plugins/geoip-processor/build.gradle @@ -27,6 +27,7 @@ dependencies { implementation libs.armeria.core testImplementation project(':data-prepper-core') + testImplementation project(':data-prepper-event') testImplementation project(':data-prepper-plugin-framework') testImplementation project(':data-prepper-pipeline-parser') testImplementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' diff --git a/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/EntryConfig.java b/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/EntryConfig.java index b425ce3bbb..19950c79e9 100644 --- a/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/EntryConfig.java +++ b/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/EntryConfig.java @@ -5,8 +5,10 @@ package org.opensearch.dataprepper.plugins.geoip.processor; +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotEmpty; import org.opensearch.dataprepper.plugins.geoip.GeoIPField; @@ -15,6 +17,8 @@ import java.util.EnumSet; import java.util.List; +@JsonPropertyOrder +@JsonClassDescription("Defines a single entry for geolocation.") public class EntryConfig { static final String DEFAULT_TARGET = "geo"; @@ -23,15 +27,17 @@ public class EntryConfig { @NotEmpty private String source; - @JsonPropertyDescription("The key of the target field in which to save the geolocation data. Default is geo.") - @JsonProperty("target") + @JsonPropertyDescription("The key of the target field in which to set the geolocation data.") + @JsonProperty(value = "target", defaultValue = DEFAULT_TARGET) private String target = DEFAULT_TARGET; - @JsonPropertyDescription("The list of geolocation fields to include in the target object. By default, this is all the fields provided by the configured databases.") + @JsonPropertyDescription("The list of geolocation fields to include in the target object. By default, this is all the fields provided by the configured databases. " + + "For example, if you wish to only obtain the actual location, you can specify location.") @JsonProperty("include_fields") private List includeFields; - @JsonPropertyDescription("The list of geolocation fields to exclude from the target object.") + @JsonPropertyDescription("The list of geolocation fields to exclude from the target object. " + + "For example, you can exclude ASN fields by including asn, asn_organization, network, ip.") @JsonProperty("exclude_fields") private List excludeFields; diff --git a/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessor.java b/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessor.java index a264d7f66a..afb0ed23d3 100644 --- a/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessor.java +++ b/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessor.java @@ -8,6 +8,7 @@ import io.micrometer.core.instrument.Counter; import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.logging.DataPrepperMarkers; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -77,7 +78,9 @@ public GeoIPProcessor(final PluginMetrics pluginMetrics, if (geoIPProcessorConfig.getWhenCondition() != null && (!expressionEvaluator.isValidExpressionStatement(geoIPProcessorConfig.getWhenCondition()))) { - throw new InvalidPluginConfigurationException("geoip_when {} is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax"); + throw new InvalidPluginConfigurationException( + String.format("geoip_when \"%s\" is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", + geoIPProcessorConfig.getWhenCondition())); } this.geoIPProcessorService = geoIpConfigSupplier.getGeoIPProcessorService().orElseThrow(() -> @@ -107,7 +110,7 @@ public Collection> doExecute(final Collection> recor try (final GeoIPDatabaseReader geoIPDatabaseReader = BatchGeoIPDatabaseReader.decorate(geoIPProcessorService.getGeoIPDatabaseReader())) { processRecords(records, geoIPDatabaseReader); } catch (final Exception e) { - LOG.error("Encountered exception in geoip processor.", e); + LOG.error(NOISY, "Encountered exception in geoip processor.", e); } return records; } diff --git a/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessorConfig.java b/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessorConfig.java index 2d48fd8fda..8f74309c24 100644 --- a/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessorConfig.java +++ b/data-prepper-plugins/geoip-processor/src/main/java/org/opensearch/dataprepper/plugins/geoip/processor/GeoIPProcessorConfig.java @@ -19,7 +19,7 @@ * An implementation class of GeoIP Processor configuration */ @JsonPropertyOrder -@JsonClassDescription("The `geoip` processor enriches events with geographic information extracted from IP addresses " + +@JsonClassDescription("The geoip processor enriches events with geographic information extracted from IP addresses " + "contained in the events.") public class GeoIPProcessorConfig { @@ -27,25 +27,24 @@ public class GeoIPProcessorConfig { @NotNull @Size(min = 1) @JsonProperty("entries") - @JsonPropertyDescription("The list of entries marked for enrichment.") + @JsonPropertyDescription("The list of entries for enrichment. Each entry provides a source field with an IP address along with a target for the enriched geolocation data.") private List entries; @JsonProperty("tags_on_engine_failure") - @JsonPropertyDescription("The tags to add to the event metadata if the geoip processor is unable to enrich an event due to an engine failure.") + @JsonPropertyDescription("The tags to add to the event metadata if the geoip processor is unable to enrich an event due to an engine failure.") private List tagsOnEngineFailure; @JsonProperty("tags_on_ip_not_found") - @JsonPropertyDescription("The tags to add to the event metadata if the geoip processor is unable to find a location for the IP address.") + @JsonPropertyDescription("The tags to add to the event metadata if the geoip processor is unable to find a location for a valid IP address.") private List tagsOnIPNotFound; @JsonProperty("tags_on_no_valid_ip") - @JsonPropertyDescription("The tags to add to the event metadata if the source field is not a valid IP address. This includes the localhost IP address.") + @JsonPropertyDescription("The tags to add to the event metadata if the source field is not a valid IP address. A source field may not be valid because it is incorrectly formatted or is the loopback/localhost IP address.") private List tagsOnNoValidIp; @JsonProperty("geoip_when") - @JsonPropertyDescription("Specifies a condition for including Events in the `geoip` processor using a Data Prepper [conditional expression]" + - "(https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/)." + - " If specified, the `geoip` processor will only run when the expression evaluates to true.") + @JsonPropertyDescription("A conditional expression such as /srcaddr != \"8.8.8.8\". " + + "If specified, the geoip processor will only run on events when the expression evaluates to true. ") private String whenCondition; /** diff --git a/data-prepper-plugins/geoip-processor/src/test/java/org/opensearch/dataprepper/plugins/geoip/extension/GeoIpServiceConfigTest.java b/data-prepper-plugins/geoip-processor/src/test/java/org/opensearch/dataprepper/plugins/geoip/extension/GeoIpServiceConfigTest.java index b8d28392db..3c53c0cd66 100644 --- a/data-prepper-plugins/geoip-processor/src/test/java/org/opensearch/dataprepper/plugins/geoip/extension/GeoIpServiceConfigTest.java +++ b/data-prepper-plugins/geoip-processor/src/test/java/org/opensearch/dataprepper/plugins/geoip/extension/GeoIpServiceConfigTest.java @@ -12,7 +12,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import software.amazon.awssdk.regions.Region; import java.io.File; diff --git a/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessor.java b/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessor.java index 6470830e49..ee6578f051 100644 --- a/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessor.java +++ b/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessor.java @@ -12,6 +12,8 @@ import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.Timer; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -21,6 +23,8 @@ import org.opensearch.dataprepper.model.processor.AbstractProcessor; import org.opensearch.dataprepper.model.processor.Processor; import org.opensearch.dataprepper.model.record.Record; +import static org.opensearch.dataprepper.plugins.processor.grok.GrokProcessorConfig.TOTAL_PATTERNS_ATTEMPTED_METADATA_KEY; +import static org.opensearch.dataprepper.plugins.processor.grok.GrokProcessorConfig.TOTAL_TIME_SPENT_IN_GROK_METADATA_KEY; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,10 +58,6 @@ import java.util.regex.PatternSyntaxException; import java.util.stream.Collectors; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; -import static org.opensearch.dataprepper.plugins.processor.grok.GrokProcessorConfig.TOTAL_PATTERNS_ATTEMPTED_METADATA_KEY; -import static org.opensearch.dataprepper.plugins.processor.grok.GrokProcessorConfig.TOTAL_TIME_SPENT_IN_GROK_METADATA_KEY; - @SingleThread @DataPrepperPlugin(name = "grok", pluginType = Processor.class, pluginConfigurationType = GrokProcessorConfig.class) @@ -123,7 +123,9 @@ public GrokProcessor(final PluginMetrics pluginMetrics, if (grokProcessorConfig.getGrokWhen() != null && (!expressionEvaluator.isValidExpressionStatement(grokProcessorConfig.getGrokWhen()))) { - throw new InvalidPluginConfigurationException("grok_when {} is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax"); + throw new InvalidPluginConfigurationException( + String.format("grok_when \"%s\" is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", + grokProcessorConfig.getGrokWhen())); } } @@ -153,11 +155,25 @@ public Collection> doExecute(final Collection> recor } catch (final TimeoutException e) { event.getMetadata().addTags(tagsOnTimeout); - LOG.error(EVENT, "Matching on record [{}] took longer than [{}] and timed out", record.getData(), grokProcessorConfig.getTimeoutMillis()); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Matching on record [{}] took longer than [{}] and timed out") + .addArgument(record.getData()) + .addArgument(grokProcessorConfig.getTimeoutMillis()) + .log(); + grokProcessingTimeoutsCounter.increment(); } catch (final ExecutionException | InterruptedException | RuntimeException e) { event.getMetadata().addTags(tagsOnMatchFailure); - LOG.error(EVENT, "An exception occurred when matching record [{}]", record.getData(), e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("An exception occurred when matching record [{}]") + .addArgument(record.getData()) + .setCause(e) + .log(); + grokProcessingErrorsCounter.increment(); } diff --git a/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessorConfig.java b/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessorConfig.java index 7fe746ad8e..8d8e1d063c 100644 --- a/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessorConfig.java +++ b/data-prepper-plugins/grok-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/grok/GrokProcessorConfig.java @@ -9,13 +9,15 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import java.util.Collections; import java.util.List; import java.util.Map; @JsonPropertyOrder -@JsonClassDescription("The `grok` processor uses pattern matching to structure and extract important keys from " + +@JsonClassDescription("The grok processor uses pattern matching to structure and extract important keys from " + "unstructured data.") public class GrokProcessorConfig { @@ -46,56 +48,75 @@ public class GrokProcessorConfig { static final int DEFAULT_TIMEOUT_MILLIS = 30000; static final String DEFAULT_TARGET_KEY = null; - @JsonProperty(BREAK_ON_MATCH) - @JsonPropertyDescription("Specifies whether to match all patterns (`false`) or stop once the first successful " + - "match is found (`true`). Default is `true`.") + @JsonProperty(MATCH) + @NotEmpty + @NotNull + @JsonPropertyDescription("Specifies which keys should match specific patterns. " + + "Each key is a source field. The value is a list of possible grok patterns to match on. " + + "The grok processor will extract values from the first match for each field. " + + "Default is an empty response body.") + private Map> match = Collections.emptyMap(); + + @JsonProperty(TARGET_KEY) + @JsonPropertyDescription("Specifies a parent-level key used to store all captures. Default value is null which will write captures into the root of the event.") + private String targetKey = DEFAULT_TARGET_KEY; + + @JsonProperty(value = BREAK_ON_MATCH, defaultValue = "true") + @JsonPropertyDescription("Specifies whether to match all patterns (false) or stop once the first successful " + + "match is found (true). Default is true.") private boolean breakOnMatch = DEFAULT_BREAK_ON_MATCH; + @JsonProperty(KEEP_EMPTY_CAPTURES) - @JsonPropertyDescription("Enables the preservation of `null` captures from the processed output. Default is `false`.") + @JsonPropertyDescription("Enables the preservation of null captures from the processed output. Default is false.") private boolean keepEmptyCaptures = DEFAULT_KEEP_EMPTY_CAPTURES; - @JsonProperty(MATCH) - @JsonPropertyDescription("Specifies which keys should match specific patterns. Default is an empty response body.") - private Map> match = Collections.emptyMap(); - @JsonProperty(NAMED_CAPTURES_ONLY) - @JsonPropertyDescription("Specifies whether to keep only named captures. Default is `true`.") + + @JsonProperty(value = NAMED_CAPTURES_ONLY, defaultValue = "true") + @JsonPropertyDescription("Specifies whether to keep only named captures. Default is true.") private boolean namedCapturesOnly = DEFAULT_NAMED_CAPTURES_ONLY; + @JsonProperty(KEYS_TO_OVERWRITE) @JsonPropertyDescription("Specifies which existing keys will be overwritten if there is a capture with the same key value. " + - "Default is `[]`.") + "Default is an empty list.") private List keysToOverwrite = Collections.emptyList(); + + @JsonProperty(PATTERN_DEFINITIONS) + @JsonPropertyDescription("Allows for a custom pattern that can be used inline inside the response body. " + + "Default is an empty response body.") + private Map patternDefinitions = Collections.emptyMap(); + @JsonProperty(PATTERNS_DIRECTORIES) @JsonPropertyDescription("Specifies which directory paths contain the custom pattern files. Default is an empty list.") private List patternsDirectories = Collections.emptyList(); + @JsonProperty(PATTERNS_FILES_GLOB) @JsonPropertyDescription("Specifies which pattern files to use from the directories specified for " + - "`pattern_directories`. Default is `*`.") + "pattern_directories. Default is *.") private String patternsFilesGlob = DEFAULT_PATTERNS_FILES_GLOB; - @JsonProperty(PATTERN_DEFINITIONS) - @JsonPropertyDescription("Allows for a custom pattern that can be used inline inside the response body. " + - "Default is an empty response body.") - private Map patternDefinitions = Collections.emptyMap(); - @JsonProperty(TIMEOUT_MILLIS) + + @JsonProperty(value = TIMEOUT_MILLIS, defaultValue = "30000") @JsonPropertyDescription("The maximum amount of time during which matching occurs. " + - "Setting to `0` prevents any matching from occurring. Default is `30,000`.") + "Setting to 0 prevents any matching from occurring. Default is 30000.") private int timeoutMillis = DEFAULT_TIMEOUT_MILLIS; - @JsonProperty(TARGET_KEY) - @JsonPropertyDescription("Specifies a parent-level key used to store all captures. Default value is `null`.") - private String targetKey = DEFAULT_TARGET_KEY; - @JsonProperty(GROK_WHEN) - @JsonPropertyDescription("Specifies under what condition the `grok` processor should perform matching. " + - "Default is no condition.") - private String grokWhen; + @JsonProperty(TAGS_ON_MATCH_FAILURE) - @JsonPropertyDescription("A `List` of `String`s that specifies the tags to be set in the event when grok fails to " + + @JsonPropertyDescription("A List of Strings that specifies the tags to be set in the event when grok fails to " + "match or an unknown exception occurs while matching. This tag may be used in conditional expressions in " + "other parts of the configuration") private List tagsOnMatchFailure = Collections.emptyList(); + @JsonProperty(TAGS_ON_TIMEOUT) - @JsonPropertyDescription("A `List` of `String`s that specifies the tags to be set in the event when grok match times out.") + @JsonPropertyDescription("The tags to add to the event metadata if the grok match times out.") private List tagsOnTimeout = Collections.emptyList(); + + @JsonProperty(GROK_WHEN) + @JsonPropertyDescription("A conditional expression such as /test != false. " + + "If specified, the grok processor will only run on events when the expression evaluates to true. ") + private String grokWhen; + @JsonProperty(INCLUDE_PERFORMANCE_METADATA) - @JsonPropertyDescription("A `Boolean` on whether to include performance metadata into event metadata, " + - "e.g. _total_grok_patterns_attempted, _total_grok_processing_time.") + @JsonPropertyDescription("A boolean value to determine whether to include performance metadata into event metadata. " + + "If set to true, the events coming out of grok will have new fields such as _total_grok_patterns_attempted and _total_grok_processing_time." + + "You can use this metadata to perform performance testing and tuning of your grok patterns. By default, it is not included.") private boolean includePerformanceMetadata = false; public boolean isBreakOnMatch() { diff --git a/data-prepper-plugins/http-source-common/build.gradle b/data-prepper-plugins/http-source-common/build.gradle index 49b282a1f2..60002782c0 100644 --- a/data-prepper-plugins/http-source-common/build.gradle +++ b/data-prepper-plugins/http-source-common/build.gradle @@ -9,7 +9,10 @@ plugins { dependencies { implementation project(':data-prepper-plugins:common') + implementation project(':data-prepper-plugins:armeria-common') + implementation project(':data-prepper-plugins:blocking-buffer') implementation libs.armeria.core + implementation libs.commons.io implementation 'software.amazon.awssdk:acm' implementation 'software.amazon.awssdk:s3' implementation 'software.amazon.awssdk:apache-client' diff --git a/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/BaseHttpService.java b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/BaseHttpService.java new file mode 100644 index 0000000000..0e23a035f6 --- /dev/null +++ b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/BaseHttpService.java @@ -0,0 +1,4 @@ +package org.opensearch.dataprepper.http; + +public interface BaseHttpService { +} diff --git a/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/BaseHttpSource.java b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/BaseHttpSource.java new file mode 100644 index 0000000000..493904e7a2 --- /dev/null +++ b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/BaseHttpSource.java @@ -0,0 +1,197 @@ +package org.opensearch.dataprepper.http; + +import com.linecorp.armeria.server.HttpService; +import com.linecorp.armeria.server.Server; +import com.linecorp.armeria.server.ServerBuilder; +import com.linecorp.armeria.server.encoding.DecodingService; +import com.linecorp.armeria.server.healthcheck.HealthCheckService; +import com.linecorp.armeria.server.throttling.ThrottlingService; +import org.opensearch.dataprepper.HttpRequestExceptionHandler; +import org.opensearch.dataprepper.armeria.authentication.ArmeriaHttpAuthenticationProvider; +import org.opensearch.dataprepper.http.certificate.CertificateProviderFactory; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.codec.ByteDecoder; +import org.opensearch.dataprepper.model.codec.JsonDecoder; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.source.Source; +import org.opensearch.dataprepper.plugins.certificate.CertificateProvider; +import org.opensearch.dataprepper.plugins.certificate.model.Certificate; +import org.opensearch.dataprepper.plugins.codec.CompressionOption; +import org.slf4j.Logger; + +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.Collections; +import java.util.Optional; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.function.Function; + +/** + * BaseHttpSource class holds the common http related source functionality including starting the armeria server and authentication handling. + * HTTP based sources should use this functionality when implementing the respective source. + */ +public abstract class BaseHttpSource> implements Source { + public static final String REGEX_HEALTH = "regex:^/(?!health$).*$"; + public static final String SERVER_CONNECTIONS = "serverConnections"; + private static final String PIPELINE_NAME_PLACEHOLDER = "${pipelineName}"; + private static final String HTTP_HEALTH_CHECK_PATH = "/health"; + private final HttpServerConfig sourceConfig; + private final CertificateProviderFactory certificateProviderFactory; + private final ArmeriaHttpAuthenticationProvider authenticationProvider; + private final HttpRequestExceptionHandler httpRequestExceptionHandler; + private final String pipelineName; + private final String sourceName; + private final Logger logger; + private final PluginMetrics pluginMetrics; + private Server server; + private ByteDecoder byteDecoder; + + public BaseHttpSource(final HttpServerConfig sourceConfig, final PluginMetrics pluginMetrics, final PluginFactory pluginFactory, + final PipelineDescription pipelineDescription, final String sourceName, final Logger logger) { + this.sourceConfig = sourceConfig; + this.pluginMetrics = pluginMetrics; + this.pipelineName = pipelineDescription.getPipelineName(); + this.sourceName = sourceName; + this.logger = logger; + this.byteDecoder = new JsonDecoder(); + this.certificateProviderFactory = new CertificateProviderFactory(sourceConfig); + final PluginModel authenticationConfiguration = sourceConfig.getAuthentication(); + final PluginSetting authenticationPluginSetting; + + if (authenticationConfiguration == null || authenticationConfiguration.getPluginName().equals(ArmeriaHttpAuthenticationProvider.UNAUTHENTICATED_PLUGIN_NAME)) { + logger.warn("Creating {} source without authentication. This is not secure.", sourceName); + logger.warn("In order to set up Http Basic authentication for the {} source, go here: https://github.com/opensearch-project/data-prepper/tree/main/data-prepper-plugins/http-source#authentication-configurations", sourceName); + } + + if (authenticationConfiguration != null) { + authenticationPluginSetting = + new PluginSetting(authenticationConfiguration.getPluginName(), authenticationConfiguration.getPluginSettings()); + } else { + authenticationPluginSetting = + new PluginSetting(ArmeriaHttpAuthenticationProvider.UNAUTHENTICATED_PLUGIN_NAME, Collections.emptyMap()); + } + authenticationPluginSetting.setPipelineName(pipelineName); + authenticationProvider = pluginFactory.loadPlugin(ArmeriaHttpAuthenticationProvider.class, authenticationPluginSetting); + httpRequestExceptionHandler = new HttpRequestExceptionHandler(pluginMetrics); + } + + @Override + public void start(final Buffer buffer) { + if (buffer == null) { + throw new IllegalStateException("Buffer provided is null"); + } + if (server == null) { + final ServerBuilder sb = Server.builder(); + + sb.disableServerHeader(); + + if (sourceConfig.isSsl()) { + logger.info("Creating {} source with SSL/TLS enabled.", sourceName); + final CertificateProvider certificateProvider = certificateProviderFactory.getCertificateProvider(); + final Certificate certificate = certificateProvider.getCertificate(); + // TODO: enable encrypted key with password + sb.https(sourceConfig.getPort()).tls( + new ByteArrayInputStream(certificate.getCertificate().getBytes(StandardCharsets.UTF_8)), + new ByteArrayInputStream(certificate.getPrivateKey().getBytes(StandardCharsets.UTF_8) + ) + ); + } else { + logger.warn("Creating {} source without SSL/TLS. This is not secure.", sourceName); + logger.warn("In order to set up TLS for the {} source, go here: https://github.com/opensearch-project/data-prepper/tree/main/data-prepper-plugins/http-source#ssl", sourceName); + sb.http(sourceConfig.getPort()); + } + + if (sourceConfig.getAuthentication() != null) { + final Optional> optionalAuthDecorator = authenticationProvider.getAuthenticationDecorator(); + + if (sourceConfig.isUnauthenticatedHealthCheck()) { + optionalAuthDecorator.ifPresent(authDecorator -> sb.decorator(REGEX_HEALTH, authDecorator)); + } else { + optionalAuthDecorator.ifPresent(sb::decorator); + } + } + + sb.maxNumConnections(sourceConfig.getMaxConnectionCount()); + sb.requestTimeout(Duration.ofMillis(sourceConfig.getRequestTimeoutInMillis())); + if (sourceConfig.getMaxRequestLength() != null) { + sb.maxRequestLength(sourceConfig.getMaxRequestLength().getBytes()); + } + final int threads = sourceConfig.getThreadCount(); + final ScheduledThreadPoolExecutor blockingTaskExecutor = new ScheduledThreadPoolExecutor(threads); + sb.blockingTaskExecutor(blockingTaskExecutor, true); + final int maxPendingRequests = sourceConfig.getMaxPendingRequests(); + final LogThrottlingStrategy logThrottlingStrategy = new LogThrottlingStrategy( + maxPendingRequests, blockingTaskExecutor.getQueue()); + final LogThrottlingRejectHandler logThrottlingRejectHandler = new LogThrottlingRejectHandler(maxPendingRequests, pluginMetrics); + + final String httpSourcePath = sourceConfig.getPath().replace(PIPELINE_NAME_PLACEHOLDER, pipelineName); + sb.decorator(httpSourcePath, ThrottlingService.newDecorator(logThrottlingStrategy, logThrottlingRejectHandler)); + final BaseHttpService httpService = getHttpService(sourceConfig.getBufferTimeoutInMillis(), buffer, pluginMetrics); + + if (CompressionOption.NONE.equals(sourceConfig.getCompression())) { + sb.annotatedService(httpSourcePath, httpService, httpRequestExceptionHandler); + } else { + sb.annotatedService(httpSourcePath, httpService, DecodingService.newDecorator(), httpRequestExceptionHandler); + } + + if (sourceConfig.hasHealthCheckService()) { + logger.info("{} source health check is enabled", sourceName); + sb.service(getHttpHealthCheckPath(), HealthCheckService.builder().longPolling(0).build()); + } + + server = sb.build(); + pluginMetrics.gauge(SERVER_CONNECTIONS, server, Server::numConnections); + } + + try { + server.start().get(); + } catch (ExecutionException ex) { + if (ex.getCause() != null && ex.getCause() instanceof RuntimeException) { + throw (RuntimeException) ex.getCause(); + } else { + throw new RuntimeException(ex); + } + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + throw new RuntimeException(ex); + } + logger.info("Started {} source on port {}", sourceName, sourceConfig.getPort()); + } + + @Override + public ByteDecoder getDecoder() { + return byteDecoder; + } + + @Override + public void stop() { + if (server != null) { + try { + server.stop().get(); + } catch (ExecutionException ex) { + if (ex.getCause() != null && ex.getCause() instanceof RuntimeException) { + throw (RuntimeException) ex.getCause(); + } else { + throw new RuntimeException(ex); + } + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + throw new RuntimeException(ex); + } + } + logger.info("Stopped {} source.", sourceName); + } + + public abstract BaseHttpService getHttpService(int bufferTimeoutInMillis, Buffer buffer, PluginMetrics pluginMetrics); + + public String getHttpHealthCheckPath() { + return HTTP_HEALTH_CHECK_PATH; + } +} diff --git a/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/Codec.java b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/Codec.java index 49b28b9aa2..e81254abf4 100644 --- a/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/Codec.java +++ b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/Codec.java @@ -24,31 +24,25 @@ public interface Codec { T parse(HttpData httpData) throws IOException; /** - * Serializes parsed data back into a UTF-8 string. + * Validates the content of the HTTP request. + * + * @param content The content of the original HTTP request + * @throws IOException A failure validating data. + */ + void validate(HttpData content) throws IOException; + + /* + * Serializes the HttpData and split into multiple bodies based on splitLength. + *

+ * The serialized bodies are passed to the serializedBodyConsumer. *

* This API will split into multiple bodies based on splitLength. Note that if a single * item is larger than this, it will be output and exceed that length. * - * @param parsedData The parsed data + * @param content The content of the original HTTP request * @param serializedBodyConsumer A {@link Consumer} to accept each serialized body * @param splitLength The length at which to split serialized bodies. * @throws IOException A failure writing data. */ - void serialize(final T parsedData, - final Consumer serializedBodyConsumer, - final int splitLength) throws IOException; - - - /** - * Serializes parsed data back into a UTF-8 string. - *

- * This API will not split the data into chunks. - * - * @param parsedData The parsed data - * @param serializedBodyConsumer A {@link Consumer} to accept the serialized body - * @throws IOException A failure writing data. - */ - default void serialize(final T parsedData, final Consumer serializedBodyConsumer) throws IOException { - serialize(parsedData, serializedBodyConsumer, Integer.MAX_VALUE); - } + void serializeSplit(HttpData content, Consumer serializedBodyConsumer, int splitLength) throws IOException; } diff --git a/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/JsonCodec.java b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/JsonCodec.java index 378af9c2d9..6306366816 100644 --- a/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/JsonCodec.java +++ b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/JsonCodec.java @@ -8,16 +8,17 @@ import com.fasterxml.jackson.core.JsonEncoding; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.io.CountingOutputStream; import com.linecorp.armeria.common.HttpData; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -33,6 +34,7 @@ public class JsonCodec implements Codec> { private static final TypeReference>> LIST_OF_MAP_TYPE_REFERENCE = new TypeReference>>() { }; + private static final JsonFactory JSON_FACTORY = new JsonFactory(); @Override @@ -48,38 +50,56 @@ public List parse(final HttpData httpData) throws IOException { return jsonList; } - public void serialize(final List jsonList, - final Consumer serializedBodyConsumer, - final int splitLength) throws IOException { - if (splitLength < 0) - throw new IllegalArgumentException("The splitLength must be greater than or equal to 0."); + @Override + public void validate(final HttpData content) throws IOException { + mapper.readValue(content.toInputStream(), + LIST_OF_MAP_TYPE_REFERENCE); + } + @Override + public void serializeSplit(final HttpData content, final Consumer serializedBodyConsumer, final int splitLength) throws IOException { + final InputStream contentInputStream = content.toInputStream(); if (splitLength == 0) { - performSerialization(jsonList, serializedBodyConsumer, Integer.MAX_VALUE); + performSerialization(contentInputStream, serializedBodyConsumer, Integer.MAX_VALUE); } else { - performSerialization(jsonList, serializedBodyConsumer, splitLength); + performSerialization(contentInputStream, serializedBodyConsumer, splitLength); } } - private void performSerialization(final List jsonList, + + private void performSerialization(final InputStream inputStream, final Consumer serializedBodyConsumer, final int splitLength) throws IOException { - JsonArrayWriter jsonArrayWriter = new JsonArrayWriter(splitLength, serializedBodyConsumer); + try (final JsonParser jsonParser = JSON_FACTORY.createParser(inputStream)) { + if (jsonParser.nextToken() != JsonToken.START_ARRAY) { + throw new RuntimeException("Input is not a valid JSON array."); + } + + JsonArrayWriter jsonArrayWriter = new JsonArrayWriter(splitLength, serializedBodyConsumer); - for (final String individualJsonLine : jsonList) { - if (jsonArrayWriter.willExceedByWriting(individualJsonLine)) { - jsonArrayWriter.close(); + while (jsonParser.nextToken() != JsonToken.END_ARRAY) { + final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + final JsonGenerator objectJsonGenerator = JSON_FACTORY + .createGenerator(outputStream, JsonEncoding.UTF8); + objectJsonGenerator.copyCurrentStructure(jsonParser); + objectJsonGenerator.close(); - jsonArrayWriter = new JsonArrayWriter(splitLength, serializedBodyConsumer); + if (jsonArrayWriter.willExceedByWriting(outputStream)) { + jsonArrayWriter.close(); + + jsonArrayWriter = new JsonArrayWriter(splitLength, serializedBodyConsumer); + + } + jsonArrayWriter.write(outputStream); } - jsonArrayWriter.write(individualJsonLine); - } - jsonArrayWriter.close(); + jsonArrayWriter.close(); + } } + private static class JsonArrayWriter { private static final JsonFactory JSON_FACTORY = new JsonFactory().setCodec(mapper); private static final int BUFFER_SIZE = 16 * 1024; @@ -100,15 +120,15 @@ private static class JsonArrayWriter { generator.writeStartArray(); } - boolean willExceedByWriting(final String individualJsonLine) { - final int lengthToWrite = individualJsonLine.getBytes(StandardCharsets.UTF_8).length; + boolean willExceedByWriting(final ByteArrayOutputStream byteArrayOutputStream) { + final int lengthToWrite = byteArrayOutputStream.size(); final long lengthOfDataWritten = countingOutputStream.getCount(); return lengthToWrite + lengthOfDataWritten + NECESSARY_CHARACTERS_TO_WRITE.length() > splitLength; } - void write(final String individualJsonLine) throws IOException { - final JsonNode jsonNode = mapper.readTree(individualJsonLine); - generator.writeTree(jsonNode); + void write(final ByteArrayOutputStream individualJsonLine) throws IOException { + final String jsonLineString = individualJsonLine.toString(Charset.defaultCharset()); + generator.writeRawValue(jsonLineString); generator.flush(); hasItem = true; } @@ -126,5 +146,4 @@ void close() throws IOException { outputStream.close(); } } - } diff --git a/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/MultiLineJsonCodec.java b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/MultiLineJsonCodec.java new file mode 100644 index 0000000000..99b8166d88 --- /dev/null +++ b/data-prepper-plugins/http-source-common/src/main/java/org/opensearch/dataprepper/http/codec/MultiLineJsonCodec.java @@ -0,0 +1,50 @@ +package org.opensearch.dataprepper.http.codec; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.linecorp.armeria.common.HttpData; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; +import java.util.regex.Pattern; + +public class MultiLineJsonCodec implements Codec>> { + private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final String REGEX = "\\r?\\n"; + private static final TypeReference> MAP_TYPE_REFERENCE = new TypeReference<>() { + }; + private static final Pattern multiLineJsonSplitPattern = Pattern.compile(REGEX); + + private static boolean isInvalidLine(final String str) { + return str == null || str.isEmpty() || str.isBlank(); + } + + @Override + public List> parse(HttpData httpData) throws IOException { + List> jsonListData = new ArrayList<>(); + + String requestBody = new String(httpData.toInputStream().readAllBytes(), StandardCharsets.UTF_8); + String[] jsonLines = multiLineJsonSplitPattern.split(requestBody); + + for (String jsonLine : jsonLines) { + if (isInvalidLine(jsonLine)) { + throw new IOException("Error processing request payload."); + } + jsonListData.add(objectMapper.readValue(jsonLine, MAP_TYPE_REFERENCE)); + } + return jsonListData; + } + + @Override + public void validate(HttpData content) throws IOException { + + } + + @Override + public void serializeSplit(final HttpData content, final Consumer serializedBodyConsumer, final int splitLength) throws IOException { + } +} \ No newline at end of file diff --git a/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/BaseHttpSourceTest.java b/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/BaseHttpSourceTest.java new file mode 100644 index 0000000000..675b84e3e7 --- /dev/null +++ b/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/BaseHttpSourceTest.java @@ -0,0 +1,273 @@ +package org.opensearch.dataprepper.http; + +import com.linecorp.armeria.server.Server; +import com.linecorp.armeria.server.ServerBuilder; +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.armeria.authentication.ArmeriaHttpAuthenticationProvider; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.buffer.blockingbuffer.BlockingBuffer; +import org.opensearch.dataprepper.plugins.codec.CompressionOption; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class BaseHttpSourceTest { + private final String PLUGIN_NAME = "opensearch_api"; + private final String TEST_PIPELINE_NAME = "test_pipeline"; + private final int DEFAULT_REQUEST_TIMEOUT_MS = 10_000; + private final int DEFAULT_THREAD_COUNT = 200; + private final int MAX_CONNECTIONS_COUNT = 500; + private final int MAX_PENDING_REQUESTS_COUNT = 1024; + private final String sourceName = "basic-http-api-source"; + + private final String TEST_SSL_CERTIFICATE_FILE = + Objects.requireNonNull(getClass().getClassLoader().getResource("test_cert.crt")).getFile(); + private final String TEST_SSL_KEY_FILE = + Objects.requireNonNull(getClass().getClassLoader().getResource("test_decrypted_key.key")).getFile(); + + @Mock + private ServerBuilder serverBuilder; + + @Mock + private Server server; + + @Mock + private CompletableFuture completableFuture; + + @Mock + private BlockingBuffer> testBuffer; + + @Mock + private BaseHttpService BaseHttpService; + + private BaseHttpSource> httpApiSource; + private HttpServerConfig sourceConfig; + private PluginMetrics pluginMetrics; + private PluginFactory pluginFactory; + private PipelineDescription pipelineDescription; + + private BaseHttpSource> createObjectUnderTest() { + return new BaseHttpSource<>(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription, sourceName, LoggerFactory.getLogger(BaseHttpService.class)) { + @Override + public BaseHttpService getHttpService(int bufferTimeoutInMillis, Buffer> buffer, PluginMetrics pluginMetrics) { + return BaseHttpService; + } + }; + } + + @BeforeEach + public void setUp() { + lenient().when(serverBuilder.annotatedService(any())).thenReturn(serverBuilder); + lenient().when(serverBuilder.http(anyInt())).thenReturn(serverBuilder); + lenient().when(serverBuilder.https(anyInt())).thenReturn(serverBuilder); + lenient().when(serverBuilder.build()).thenReturn(server); + lenient().when(server.start()).thenReturn(completableFuture); + + sourceConfig = mock(HttpServerConfig.class); + lenient().when(sourceConfig.getRequestTimeoutInMillis()).thenReturn(DEFAULT_REQUEST_TIMEOUT_MS); + lenient().when(sourceConfig.getPath()).thenReturn("/path"); + lenient().when(sourceConfig.getPort()).thenReturn(9092); + lenient().when(sourceConfig.getThreadCount()).thenReturn(DEFAULT_THREAD_COUNT); + lenient().when(sourceConfig.getMaxConnectionCount()).thenReturn(MAX_CONNECTIONS_COUNT); + lenient().when(sourceConfig.getMaxPendingRequests()).thenReturn(MAX_PENDING_REQUESTS_COUNT); + lenient().when(sourceConfig.hasHealthCheckService()).thenReturn(true); + lenient().when(sourceConfig.getCompression()).thenReturn(CompressionOption.NONE); + + pluginMetrics = PluginMetrics.fromNames(PLUGIN_NAME, TEST_PIPELINE_NAME); + + pluginFactory = mock(PluginFactory.class); + final ArmeriaHttpAuthenticationProvider authenticationProvider = mock(ArmeriaHttpAuthenticationProvider.class); + when(pluginFactory.loadPlugin(eq(ArmeriaHttpAuthenticationProvider.class), any(PluginSetting.class))) + .thenReturn(authenticationProvider); + + pipelineDescription = mock(PipelineDescription.class); + when(pipelineDescription.getPipelineName()).thenReturn(TEST_PIPELINE_NAME); + + httpApiSource = createObjectUnderTest(); + } + + @AfterEach + public void cleanUp() { + if (httpApiSource != null) { + httpApiSource.stop(); + } + } + + @Test + public void testServerStartCertFileSuccess() throws IOException { + try (MockedStatic armeriaServerMock = Mockito.mockStatic(Server.class)) { + armeriaServerMock.when(Server::builder).thenReturn(serverBuilder); + when(server.stop()).thenReturn(completableFuture); + + final Path certFilePath = new File(TEST_SSL_CERTIFICATE_FILE).toPath(); + final Path keyFilePath = new File(TEST_SSL_KEY_FILE).toPath(); + final String certAsString = Files.readString(certFilePath); + final String keyAsString = Files.readString(keyFilePath); + + when(sourceConfig.isSsl()).thenReturn(true); + when(sourceConfig.getSslCertificateFile()).thenReturn(TEST_SSL_CERTIFICATE_FILE); + when(sourceConfig.getSslKeyFile()).thenReturn(TEST_SSL_KEY_FILE); + final BaseHttpSource> objectUnderTest = createObjectUnderTest(); + objectUnderTest.start(testBuffer); + objectUnderTest.stop(); + + final ArgumentCaptor certificateIs = ArgumentCaptor.forClass(InputStream.class); + final ArgumentCaptor privateKeyIs = ArgumentCaptor.forClass(InputStream.class); + verify(serverBuilder).tls(certificateIs.capture(), privateKeyIs.capture()); + final String actualCertificate = IOUtils.toString(certificateIs.getValue(), StandardCharsets.UTF_8.name()); + final String actualPrivateKey = IOUtils.toString(privateKeyIs.getValue(), StandardCharsets.UTF_8.name()); + assertThat(actualCertificate, is(certAsString)); + assertThat(actualPrivateKey, is(keyAsString)); + } + } + + @Test + public void testDoubleStart() { + // starting server + httpApiSource.start(testBuffer); + // double start server + Assertions.assertThrows(IllegalStateException.class, () -> httpApiSource.start(testBuffer)); + } + + @Test + public void testStartWithEmptyBuffer() { + final BaseHttpSource> httpApiSource = createObjectUnderTest(); + Assertions.assertThrows(IllegalStateException.class, () -> httpApiSource.start(null)); + } + + @Test + public void testStartWithServerExecutionExceptionNoCause() throws ExecutionException, InterruptedException { + // Prepare + final BaseHttpSource> httpApiSource = createObjectUnderTest(); + try (MockedStatic armeriaServerMock = Mockito.mockStatic(Server.class)) { + armeriaServerMock.when(Server::builder).thenReturn(serverBuilder); + when(completableFuture.get()).thenThrow(new ExecutionException("", null)); + + // When/Then + Assertions.assertThrows(RuntimeException.class, () -> httpApiSource.start(testBuffer)); + } + } + + @Test + public void testStartWithServerExecutionExceptionWithCause() throws ExecutionException, InterruptedException { + // Prepare + final BaseHttpSource> httpApiSource = createObjectUnderTest(); + try (MockedStatic armeriaServerMock = Mockito.mockStatic(Server.class)) { + armeriaServerMock.when(Server::builder).thenReturn(serverBuilder); + final NullPointerException expCause = new NullPointerException(); + when(completableFuture.get()).thenThrow(new ExecutionException("", expCause)); + + // When/Then + final RuntimeException ex = Assertions.assertThrows(RuntimeException.class, () -> httpApiSource.start(testBuffer)); + Assertions.assertEquals(expCause, ex); + } + } + + @Test + public void testStartWithInterruptedException() throws ExecutionException, InterruptedException { + // Prepare + final BaseHttpSource> httpApiSource = createObjectUnderTest(); + try (MockedStatic armeriaServerMock = Mockito.mockStatic(Server.class)) { + armeriaServerMock.when(Server::builder).thenReturn(serverBuilder); + when(completableFuture.get()).thenThrow(new InterruptedException()); + + // When/Then + Assertions.assertThrows(RuntimeException.class, () -> httpApiSource.start(testBuffer)); + Assertions.assertTrue(Thread.interrupted()); + } + } + + @Test + public void testStopWithServerExecutionExceptionNoCause() throws ExecutionException, InterruptedException { + // Prepare + final BaseHttpSource> httpApiSource = createObjectUnderTest(); + try (MockedStatic armeriaServerMock = Mockito.mockStatic(Server.class)) { + armeriaServerMock.when(Server::builder).thenReturn(serverBuilder); + httpApiSource.start(testBuffer); + when(server.stop()).thenReturn(completableFuture); + + // When/Then + when(completableFuture.get()).thenThrow(new ExecutionException("", null)); + Assertions.assertThrows(RuntimeException.class, httpApiSource::stop); + } + } + + @Test + public void testStopWithServerExecutionExceptionWithCause() throws ExecutionException, InterruptedException { + // Prepare + final BaseHttpSource> httpApiSource = createObjectUnderTest(); + try (MockedStatic armeriaServerMock = Mockito.mockStatic(Server.class)) { + armeriaServerMock.when(Server::builder).thenReturn(serverBuilder); + httpApiSource.start(testBuffer); + when(server.stop()).thenReturn(completableFuture); + final NullPointerException expCause = new NullPointerException(); + when(completableFuture.get()).thenThrow(new ExecutionException("", expCause)); + + // When/Then + final RuntimeException ex = Assertions.assertThrows(RuntimeException.class, httpApiSource::stop); + Assertions.assertEquals(expCause, ex); + } + } + + @Test + public void testStopWithInterruptedException() throws ExecutionException, InterruptedException { + // Prepare + final BaseHttpSource> httpApiSource = createObjectUnderTest(); + try (MockedStatic armeriaServerMock = Mockito.mockStatic(Server.class)) { + armeriaServerMock.when(Server::builder).thenReturn(serverBuilder); + httpApiSource.start(testBuffer); + when(server.stop()).thenReturn(completableFuture); + when(completableFuture.get()).thenThrow(new InterruptedException()); + + // When/Then + Assertions.assertThrows(RuntimeException.class, httpApiSource::stop); + Assertions.assertTrue(Thread.interrupted()); + } + } + + @Test + public void testRunAnotherSourceWithSamePort() { + // starting server + httpApiSource.start(testBuffer); + + final BaseHttpSource> secondHttpAPISource = createObjectUnderTest(); + //Expect RuntimeException because when port is already in use, BindException is thrown which is not RuntimeException + Assertions.assertThrows(RuntimeException.class, () -> secondHttpAPISource.start(testBuffer)); + } + +} diff --git a/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/codec/JsonCodecTest.java b/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/codec/JsonCodecTest.java index b58f9e6cde..ca2a483eee 100644 --- a/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/codec/JsonCodecTest.java +++ b/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/codec/JsonCodecTest.java @@ -38,19 +38,6 @@ class JsonCodecTest { private static final HttpData GOOD_TEST_DATA = HttpData.ofUtf8("[{\"a\":\"b\"}, {\"c\":\"d\"}]"); private static final HttpData GOOD_LARGE_TEST_DATA = HttpData.ofUtf8("[{\"a1\":\"b1\"}, {\"a2\":\"b2\"}, {\"a3\":\"b3\"}, {\"a4\":\"b4\"}, {\"a5\":\"b5\"}]"); private static final HttpData GOOD_LARGE_TEST_DATA_UNICODE = HttpData.ofUtf8("[{\"ὊὊὊ1\":\"ὊὊὊ1\"}, {\"ὊὊὊ2\":\"ὊὊὊ2\"}, {\"a3\":\"b3\"}, {\"ὊὊὊ4\":\"ὊὊὊ4\"}]"); - public static final List JSON_BODIES_LIST = List.of( - "{\"a1\":\"b1\"}", - "{\"a2\":\"b2\"}", - "{\"a3\":\"b3\"}", - "{\"a4\":\"b4\"}", - "{\"a5\":\"b5\"}" - ); - public static final List JSON_BODIES_UNICODE_MIXED_LIST = List.of( - "{\"ὊὊὊ1\":\"ὊὊὊ1\"}", - "{\"ὊὊὊ2\":\"ὊὊὊ2\"}", - "{\"a3\":\"b3\"}", - "{\"ὊὊὊ4\":\"ὊὊὊ4\"}" - ); private final HttpData badTestDataJsonLine = HttpData.ofUtf8("{\"a\":\"b\"}"); private final HttpData badTestDataMultiJsonLines = HttpData.ofUtf8("{\"a\":\"b\"}{\"c\":\"d\"}"); private final HttpData badTestDataNonJson = HttpData.ofUtf8("non json content"); @@ -84,16 +71,16 @@ public void testParseSuccessWithMaxSize() throws IOException { @ParameterizedTest @ValueSource(ints = {-1, -2, Integer.MIN_VALUE}) - void serialize_with_invalid_splitLength(final int splitLength) { + void serializeSplit_with_invalid_splitLength(final int splitLength) { final Consumer serializedBodyConsumer = mock(Consumer.class); - assertThrows(IllegalArgumentException.class, () -> objectUnderTest.serialize(JSON_BODIES_LIST, serializedBodyConsumer, splitLength)); + assertThrows(IllegalArgumentException.class, () -> objectUnderTest.serializeSplit(GOOD_LARGE_TEST_DATA, serializedBodyConsumer, splitLength)); } @ParameterizedTest @ValueSource(ints = {1, 2, 24}) - void serialize_with_split_length_leading_to_groups_of_one(final int splitLength) throws IOException { + void serializeSplit_with_split_length_leading_to_groups_of_one(final int splitLength) throws IOException { final Consumer serializedBodyConsumer = mock(Consumer.class); - objectUnderTest.serialize(JSON_BODIES_LIST, serializedBodyConsumer, splitLength); + objectUnderTest.serializeSplit(GOOD_LARGE_TEST_DATA, serializedBodyConsumer, splitLength); final ArgumentCaptor actualSerializedBodyCaptor = ArgumentCaptor.forClass(String.class); verify(serializedBodyConsumer, times(5)).accept(actualSerializedBodyCaptor.capture()); @@ -109,9 +96,9 @@ void serialize_with_split_length_leading_to_groups_of_one(final int splitLength) @ParameterizedTest @ValueSource(ints = {25, 30, 36}) - void serialize_with_split_length_leading_to_groups_of_two(final int splitLength) throws IOException { + void serializeSplit_with_split_length_leading_to_groups_of_two(final int splitLength) throws IOException { final Consumer serializedBodyConsumer = mock(Consumer.class); - objectUnderTest.serialize(JSON_BODIES_LIST, serializedBodyConsumer, splitLength); + objectUnderTest.serializeSplit(GOOD_LARGE_TEST_DATA, serializedBodyConsumer, splitLength); final ArgumentCaptor actualSerializedBodyCaptor = ArgumentCaptor.forClass(String.class); verify(serializedBodyConsumer, times(3)).accept(actualSerializedBodyCaptor.capture()); @@ -129,9 +116,9 @@ void serialize_with_split_length_leading_to_groups_of_two(final int splitLength) @ParameterizedTest @ValueSource(ints = {37, 48}) - void serialize_with_split_length_leading_to_groups_up_to_three(final int splitLength) throws IOException { + void serializeSplit_with_split_length_leading_to_groups_up_to_three(final int splitLength) throws IOException { final Consumer serializedBodyConsumer = mock(Consumer.class); - objectUnderTest.serialize(JSON_BODIES_LIST, serializedBodyConsumer, splitLength); + objectUnderTest.serializeSplit(GOOD_LARGE_TEST_DATA, serializedBodyConsumer, splitLength); final ArgumentCaptor actualSerializedBodyCaptor = ArgumentCaptor.forClass(String.class); verify(serializedBodyConsumer, times(2)).accept(actualSerializedBodyCaptor.capture()); @@ -147,9 +134,9 @@ void serialize_with_split_length_leading_to_groups_up_to_three(final int splitLe @ParameterizedTest @ValueSource(ints = {0, Integer.MAX_VALUE}) - void serialize_with_split_size_that_does_not_split(final int splitLength) throws IOException { + void serializeSplit_with_split_size_that_does_not_split(final int splitLength) throws IOException { final Consumer serializedBodyConsumer = mock(Consumer.class); - objectUnderTest.serialize(JSON_BODIES_LIST, serializedBodyConsumer, splitLength); + objectUnderTest.serializeSplit(GOOD_LARGE_TEST_DATA, serializedBodyConsumer, splitLength); final ArgumentCaptor actualSerializedBodyCaptor = ArgumentCaptor.forClass(String.class); verify(serializedBodyConsumer, times(1)).accept(actualSerializedBodyCaptor.capture()); @@ -160,9 +147,9 @@ void serialize_with_split_size_that_does_not_split(final int splitLength) throws @ParameterizedTest @ValueSource(ints = {58, 68}) - void serialize_with_split_length_unicode(final int splitLength) throws IOException { + void serializeSplit_with_split_length_unicode(final int splitLength) throws IOException { final Consumer serializedBodyConsumer = mock(Consumer.class); - objectUnderTest.serialize(JSON_BODIES_UNICODE_MIXED_LIST, serializedBodyConsumer, splitLength); + objectUnderTest.serializeSplit(GOOD_LARGE_TEST_DATA_UNICODE, serializedBodyConsumer, splitLength); final ArgumentCaptor actualSerializedBodyCaptor = ArgumentCaptor.forClass(String.class); verify(serializedBodyConsumer, times(2)).accept(actualSerializedBodyCaptor.capture()); @@ -178,17 +165,19 @@ void serialize_with_split_length_unicode(final int splitLength) throws IOExcepti @ParameterizedTest @ArgumentsSource(GoodTestData.class) - void parse_and_serialize_symmetry(final HttpData httpData) throws IOException { - final List parsedList = objectUnderTest.parse(httpData); - + void serializeSplit_and_parse_symmetry(final HttpData httpData) throws IOException { + final List parsedFromOriginal = objectUnderTest.parse(httpData); final Consumer serializedBodyConsumer = mock(Consumer.class); - objectUnderTest.serialize(parsedList, serializedBodyConsumer); + objectUnderTest.serializeSplit(httpData, serializedBodyConsumer, Integer.MAX_VALUE); final ArgumentCaptor actualSerializedBodyCaptor = ArgumentCaptor.forClass(String.class); verify(serializedBodyConsumer, times(1)).accept(actualSerializedBodyCaptor.capture()); final String actualString = actualSerializedBodyCaptor.getValue(); final String expectedJsonString = httpData.toStringUtf8().replace(" ", ""); assertThat(actualString, equalTo(expectedJsonString)); + + final List parsedFromRewritten = objectUnderTest.parse(HttpData.ofUtf8(actualString)); + assertThat(parsedFromRewritten, equalTo(parsedFromOriginal)); } @@ -196,10 +185,8 @@ void parse_and_serialize_symmetry(final HttpData httpData) throws IOException { @ArgumentsSource(JsonArrayWithKnownFirstArgumentsProvider.class) public void parse_should_return_lists_smaller_than_provided_length( final String inputJsonArray, final String knownFirstPart, final int maxSize, final List> expectedChunks, final List exceedsMaxSize) throws IOException { - List individualJsonLines = objectUnderTest.parse(HttpData.ofUtf8(inputJsonArray)); - Consumer serializedBodyConsumer = mock(Consumer.class); - objectUnderTest.serialize(individualJsonLines, serializedBodyConsumer, maxSize); + objectUnderTest.serializeSplit(HttpData.ofUtf8(inputJsonArray), serializedBodyConsumer, maxSize); ArgumentCaptor actualSerializedBodyCaptor = ArgumentCaptor.forClass(String.class); verify(serializedBodyConsumer, times(expectedChunks.size())).accept(actualSerializedBodyCaptor.capture()); @@ -301,4 +288,26 @@ public Stream provideArguments(ExtensionContext extensionCo ); } } + + + @ParameterizedTest + @ArgumentsSource(GoodTestData.class) + void validate_with_known_good_Json(final HttpData httpData) throws IOException { + objectUnderTest.validate(httpData); + } + + @Test + void validate_with_valid_JSON_but_not_array_should_throw() { + assertThrows(IOException.class, () -> objectUnderTest.validate(badTestDataJsonLine)); + } + + @Test + void validate_with_multiline_JSON_should_throw() { + assertThrows(IOException.class, () -> objectUnderTest.validate(badTestDataMultiJsonLines)); + } + + @Test + void validate_with_invalid_JSON_should_throw() { + assertThrows(IOException.class, () -> objectUnderTest.validate(badTestDataNonJson)); + } } diff --git a/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/codec/MultiLineJsonCodecTest.java b/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/codec/MultiLineJsonCodecTest.java new file mode 100644 index 0000000000..4bcb4b3031 --- /dev/null +++ b/data-prepper-plugins/http-source-common/src/test/java/org/opensearch/dataprepper/http/codec/MultiLineJsonCodecTest.java @@ -0,0 +1,90 @@ +package org.opensearch.dataprepper.http.codec; + +import com.linecorp.armeria.common.HttpData; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class MultiLineJsonCodecTest { + private final HttpData serializedRequest = HttpData.ofUtf8("" + + "{ \"index\": { \"_index\": \"test-index\", \"_id\": \"id1\" } }\n" + + "{ \"text\": \"text1\", \"year\": \"2013\" }"); + + private final HttpData serializedRequestMultipleRows = HttpData.ofUtf8("" + + "{ \"index\": { \"_index\": \"test-index\", \"_id\": \"id1\" } }\n" + + "{ \"text\": \"text1\", \"year\": \"2013\" }\n" + + "{ \"index\": { \"_index\": \"test-index\", \"_id\": \"id1\" } }\n" + + "{ \"text\": \"text1\", \"year\": \"2013\" }\n" + + "{ \"index\": { \"_index\": \"test-index\", \"_id\": \"id1\" } }\n" + + "{ \"text\": \"text1\", \"year\": \"2013\" }\n" + + "{ \"index\": { \"_index\": \"test-index\", \"_id\": \"id1\" } }\n" + + "{ \"text\": \"text1\", \"year\": \"2013\" }\n" + + "{ \"index\": { \"_index\": \"test-index\", \"_id\": \"id1\" } }\n" + + "{ \"text\": \"text1\", \"year\": \"2013\" }\n"); + + private final HttpData serializedRequestBad = HttpData.ofUtf8("{}\n\n{}"); + private final HttpData serializedRequestBadWithBlanks = HttpData.ofUtf8("{}\n \n "); + private final HttpData serializedRequestBadWithWhiteSpaces = HttpData.ofUtf8("\t\n\r\f {}"); + private final HttpData serializedRequestBadEmpty = HttpData.ofUtf8(""); + private final HttpData serializedRequestBadEmptyNewLines = HttpData.ofUtf8("\n\n\n\n\n\n\n \n"); + private final HttpData serializedRequestBadInvalidJson = HttpData.ofUtf8("{\"text\":"); + + private MultiLineJsonCodec createObjectUnderTest() { + return new MultiLineJsonCodec(); + } + + @Test + public void testParseSuccess() throws IOException { + // When + MultiLineJsonCodec multiLineJsonCodec = createObjectUnderTest(); + List> res = multiLineJsonCodec.parse(serializedRequest); + + // Then + assertEquals(2, res.size()); + assertEquals(res.get(0).containsKey("index"), true); + Map innerMap = (Map) res.get(0).get("index"); + assertEquals(innerMap.get("_index"), "test-index"); + assertEquals(innerMap.get("_id"), "id1"); + assertEquals(res.get(1).containsKey("text"), true); + assertEquals(res.get(1).get("text"), "text1"); + assertEquals(res.get(1).get("year"), "2013"); + } + + @Test + public void testParseSuccess2() throws IOException { + // When + MultiLineJsonCodec multiLineJsonCodec = createObjectUnderTest(); + List> res = multiLineJsonCodec.parse(serializedRequestMultipleRows); + + // Then + assertEquals(10, res.size()); + + for (int idx = 0; idx < res.size() - 1; idx++) { + assertEquals(res.get(idx).containsKey("index"), true); + Map innerMap = (Map) res.get(idx).get("index"); + assertEquals(innerMap.get("_index"), "test-index"); + assertEquals(innerMap.get("_id"), "id1"); + assertEquals(res.get(idx+1).containsKey("text"), true); + assertEquals(res.get(idx+1).get("text"), "text1"); + assertEquals(res.get(idx+1).get("year"), "2013"); + idx++; + } + } + + @Test + public void testParseFailure() { + MultiLineJsonCodec multiLineJsonCodec = createObjectUnderTest(); + assertThrows(IOException.class, () -> multiLineJsonCodec.parse(serializedRequestBad)); + assertThrows(IOException.class, () -> multiLineJsonCodec.parse(serializedRequestBadEmpty)); + assertThrows(IOException.class, () -> multiLineJsonCodec.parse(serializedRequestBadEmptyNewLines)); + assertThrows(IOException.class, () -> multiLineJsonCodec.parse(serializedRequestBadInvalidJson)); + assertThrows(IOException.class, () -> multiLineJsonCodec.parse(serializedRequestBadWithBlanks)); + assertThrows(IOException.class, () -> multiLineJsonCodec.parse(serializedRequestBadWithWhiteSpaces)); + } + +} diff --git a/data-prepper-plugins/http-source/build.gradle b/data-prepper-plugins/http-source/build.gradle index 7d54d5f177..2d5c5ceceb 100644 --- a/data-prepper-plugins/http-source/build.gradle +++ b/data-prepper-plugins/http-source/build.gradle @@ -5,6 +5,7 @@ plugins { id 'java' + id 'me.champeau.jmh' version '0.7.2' } dependencies { diff --git a/data-prepper-plugins/http-source/src/jmh/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPServiceMeasure.java b/data-prepper-plugins/http-source/src/jmh/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPServiceMeasure.java new file mode 100644 index 0000000000..40d5b7c3e2 --- /dev/null +++ b/data-prepper-plugins/http-source/src/jmh/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPServiceMeasure.java @@ -0,0 +1,71 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.loghttp; + +import com.linecorp.armeria.common.AggregatedHttpRequest; +import com.linecorp.armeria.common.HttpData; +import com.linecorp.armeria.common.HttpMethod; +import com.linecorp.armeria.common.HttpResponse; +import com.linecorp.armeria.common.RequestHeaders; +import com.linecorp.armeria.server.ServiceRequestContext; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.buffer.Buffer; + +import java.io.IOException; +import java.time.Duration; +import java.util.Optional; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.withSettings; + +public class LogHTTPServiceMeasure { + + @State(Scope.Benchmark) + public static class BenchmarkState { + private HttpData httpData; + private Buffer buffer; + private LogHTTPService logHTTPService; + private ServiceRequestContext serviceRequestContext; + private RequestHeaders requestHeaders; + + @Setup + public void setUp() throws IOException { + byte[] jsonContent = new TestGenerator().createJson(10 * 1024 * 1024); + httpData = HttpData.ofUtf8(new String(jsonContent)); + + buffer = mock(Buffer.class, withSettings().stubOnly()); + when(buffer.isByteBuffer()).thenReturn(true); + when(buffer.getMaxRequestSize()).thenReturn(Optional.of(512 * 1024)); + when(buffer.getOptimalRequestSize()).thenReturn(Optional.of(256 * 1024)); + + serviceRequestContext = mock(ServiceRequestContext.class); + logHTTPService = new LogHTTPService((int) Duration.ofSeconds(10).toMillis(), buffer, PluginMetrics.fromPrefix("testing")); + + requestHeaders = RequestHeaders.builder() + .method(HttpMethod.POST) + .path("/test") + .build(); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @Warmup(iterations = 1) + @Measurement(iterations = 5, time = 10) + public HttpResponse measure_doPost(BenchmarkState benchmarkState) throws Exception { + AggregatedHttpRequest aggregatedHttpRequest = AggregatedHttpRequest.of(benchmarkState.requestHeaders, benchmarkState.httpData); + return benchmarkState.logHTTPService.doPost(benchmarkState.serviceRequestContext, aggregatedHttpRequest); + } +} diff --git a/data-prepper-plugins/http-source/src/jmh/java/org/opensearch/dataprepper/plugins/source/loghttp/TestGenerator.java b/data-prepper-plugins/http-source/src/jmh/java/org/opensearch/dataprepper/plugins/source/loghttp/TestGenerator.java new file mode 100644 index 0000000000..4c09ef99d7 --- /dev/null +++ b/data-prepper-plugins/http-source/src/jmh/java/org/opensearch/dataprepper/plugins/source/loghttp/TestGenerator.java @@ -0,0 +1,69 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.loghttp; + +import com.fasterxml.jackson.core.JsonEncoding; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; +import org.apache.commons.io.output.CountingOutputStream; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.time.Instant; +import java.util.Random; +import java.util.UUID; + +public class TestGenerator { + private final Random random = new Random(); + + public byte[] createJson(final int roughMaximumSize) throws IOException { + final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(roughMaximumSize); + writeLog(roughMaximumSize, byteArrayOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + private void writeLog(final int roughMaximumSize, final OutputStream fileOutputStream) throws IOException { + try (final CountingOutputStream countingOutputStream = new CountingOutputStream(fileOutputStream)) { + writeJson(roughMaximumSize, countingOutputStream); + } + } + + private void writeJson(final int roughMaximumSize, final CountingOutputStream countingOutputStream) throws IOException { + final JsonFactory jsonFactory = new JsonFactory(); + final JsonGenerator jsonGenerator = jsonFactory + .createGenerator(countingOutputStream, JsonEncoding.UTF8); + + jsonGenerator.writeStartArray(); + + while (countingOutputStream.getCount() < roughMaximumSize) { + writeSingleRecord(jsonGenerator); + jsonGenerator.flush(); // Need to flush the JsonGenerator in order to get the bytes to write to the counting output stream + } + + jsonGenerator.writeEndArray(); + jsonGenerator.close(); + + countingOutputStream.flush(); + } + + private void writeSingleRecord(final JsonGenerator jsonGenerator) throws IOException { + final StringBuilder logStringBuilder = new StringBuilder(); + logStringBuilder.append(Instant.now()); + logStringBuilder.append(" "); + logStringBuilder.append(UUID.randomUUID()); + logStringBuilder.append(" "); + logStringBuilder.append(UUID.randomUUID()); + logStringBuilder.append(" "); + logStringBuilder.append(random.nextInt(100_000)); + + jsonGenerator.writeStartObject(); + + jsonGenerator.writeStringField("log", logStringBuilder.toString()); + + jsonGenerator.writeEndObject(); + } +} diff --git a/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSource.java b/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSource.java index cea9e252f6..d56946f334 100644 --- a/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSource.java +++ b/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSource.java @@ -141,7 +141,7 @@ public void start(final Buffer> buffer) { final String httpSourcePath = sourceConfig.getPath().replace(PIPELINE_NAME_PLACEHOLDER, pipelineName); sb.decorator(httpSourcePath, ThrottlingService.newDecorator(logThrottlingStrategy, logThrottlingRejectHandler)); - final LogHTTPService logHTTPService = new LogHTTPService(sourceConfig.getBufferTimeoutInMillis(), buffer, byteDecoder, pluginMetrics); + final LogHTTPService logHTTPService = new LogHTTPService(sourceConfig.getBufferTimeoutInMillis(), buffer, pluginMetrics); if (CompressionOption.NONE.equals(sourceConfig.getCompression())) { sb.annotatedService(httpSourcePath, logHTTPService, httpRequestExceptionHandler); diff --git a/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPService.java b/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPService.java index 2163f322ef..c2bd344fc5 100644 --- a/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPService.java +++ b/data-prepper-plugins/http-source/src/main/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPService.java @@ -11,7 +11,6 @@ import org.opensearch.dataprepper.model.log.JacksonLog; import org.opensearch.dataprepper.model.log.Log; import org.opensearch.dataprepper.model.record.Record; -import org.opensearch.dataprepper.model.codec.ByteDecoder; import com.linecorp.armeria.common.AggregatedHttpRequest; import com.linecorp.armeria.common.HttpData; import com.linecorp.armeria.common.HttpResponse; @@ -61,7 +60,6 @@ public class LogHTTPService { public LogHTTPService(final int bufferWriteTimeoutInMillis, final Buffer> buffer, - final ByteDecoder decoder, final PluginMetrics pluginMetrics) { this.buffer = buffer; this.bufferWriteTimeoutInMillis = bufferWriteTimeoutInMillis; @@ -89,33 +87,47 @@ public HttpResponse doPost(final ServiceRequestContext serviceRequestContext, fi HttpResponse processRequest(final AggregatedHttpRequest aggregatedHttpRequest) throws Exception { final HttpData content = aggregatedHttpRequest.content(); - final List jsonList; - try { - jsonList = jsonCodec.parse(content); - } catch (IOException e) { - LOG.error("Failed to parse the request of size {} due to: {}", content.length(), e.getMessage()); - throw new IOException("Bad request data format. Needs to be json array.", e.getCause()); - } - try { - if (buffer.isByteBuffer()) { - if (bufferMaxRequestLength != null && bufferOptimalRequestLength != null && content.array().length > bufferOptimalRequestLength) { - jsonCodec.serialize(jsonList, this::writeChunkedBody, bufferOptimalRequestLength - SERIALIZATION_OVERHEAD); - } else { - // jsonList is ignored in this path but parse() was done to make - // sure that the data is in the expected json format + if (buffer.isByteBuffer()) { + if (bufferMaxRequestLength != null && bufferOptimalRequestLength != null && content.array().length > bufferOptimalRequestLength) { + jsonCodec.serializeSplit(content, this::writeChunkedBody, bufferOptimalRequestLength - SERIALIZATION_OVERHEAD); + } else { + try { + jsonCodec.validate(content); + } catch (IOException e) { + LOG.error("Failed to parse the request of size {} due to: {}", content.length(), e.getMessage()); + throw new IOException("Bad request data format. Needs to be json array.", e.getCause()); + } + + try { buffer.writeBytes(content.array(), null, bufferWriteTimeoutInMillis); + } catch (Exception e) { + LOG.error("Failed to write the request of size {} due to: {}", content.length(), e.getMessage()); + throw e; } - } else { - final List> records = jsonList.stream() - .map(this::buildRecordLog) - .collect(Collectors.toList()); + } + } else { + final List jsonList; + + try { + jsonList = jsonCodec.parse(content); + } catch (IOException e) { + LOG.error("Failed to parse the request of size {} due to: {}", content.length(), e.getMessage()); + throw new IOException("Bad request data format. Needs to be json array.", e.getCause()); + } + + final List> records = jsonList.stream() + .map(this::buildRecordLog) + .collect(Collectors.toList()); + + try { buffer.writeAll(records, bufferWriteTimeoutInMillis); + } catch (Exception e) { + LOG.error("Failed to write the request of size {} due to: {}", content.length(), e.getMessage()); + throw e; } - } catch (Exception e) { - LOG.error("Failed to write the request of size {} due to: {}", content.length(), e.getMessage()); - throw e; } + successRequestsCounter.increment(); return HttpResponse.of(HttpStatus.OK); } diff --git a/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSourceConfigTest.java b/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSourceConfigTest.java index bf05e6b6b2..70051bff18 100644 --- a/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSourceConfigTest.java +++ b/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/HTTPSourceConfigTest.java @@ -21,6 +21,5 @@ void testDefault() { assertEquals(HTTPSourceConfig.DEFAULT_LOG_INGEST_URI, sourceConfig.getPath()); assertEquals(HTTPSourceConfig.DEFAULT_PORT, sourceConfig.getDefaultPort()); assertEquals(HTTPSourceConfig.DEFAULT_LOG_INGEST_URI, sourceConfig.getDefaultPath()); - } } diff --git a/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPServiceTest.java b/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPServiceTest.java index 2e9b802f32..5e2ffe2c7d 100644 --- a/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPServiceTest.java +++ b/data-prepper-plugins/http-source/src/test/java/org/opensearch/dataprepper/plugins/source/loghttp/LogHTTPServiceTest.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper.plugins.source.loghttp; import com.linecorp.armeria.server.ServiceRequestContext; +import org.junit.jupiter.api.Nested; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.buffer.SizeOverflowException; @@ -49,8 +50,12 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -107,7 +112,7 @@ public void setUp() throws Exception { ); Buffer> blockingBuffer = new BlockingBuffer<>(TEST_BUFFER_CAPACITY, 8, "test-pipeline"); - logHTTPService = new LogHTTPService(TEST_TIMEOUT_IN_MILLIS, blockingBuffer, null, pluginMetrics); + logHTTPService = new LogHTTPService(TEST_TIMEOUT_IN_MILLIS, blockingBuffer, pluginMetrics); } @Test @@ -182,71 +187,186 @@ public void testHTTPRequestTimeout() throws Exception { verify(requestProcessDuration, times(2)).recordCallable(ArgumentMatchers.>any()); } - @Test - public void testChunking() throws Exception { - byteBuffer = mock(Buffer.class); - when(byteBuffer.isByteBuffer()).thenReturn(true); - when(byteBuffer.getMaxRequestSize()).thenReturn(Optional.of(4*1024*1024)); - when(byteBuffer.getOptimalRequestSize()).thenReturn(Optional.of(1024*1024)); - - logHTTPService = new LogHTTPService(TEST_TIMEOUT_IN_MILLIS, byteBuffer, null, pluginMetrics); - AggregatedHttpRequest aggregatedHttpRequest = mock(AggregatedHttpRequest.class); - HttpData httpData = mock(HttpData.class); - // Test small json data - String testString ="{\"key1\":\"value1\"},{\"key2\":\"value2\"},{\"key3\":\"value3\"},{\"key4\":\"value4\"},{\"key5\":\"value5\"}"; - String exampleString = "[ " + testString + "]"; - when(httpData.array()).thenReturn(exampleString.getBytes()); - InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); - when(httpData.toInputStream()).thenReturn(stream); - - when(aggregatedHttpRequest.content()).thenReturn(httpData); - logHTTPService.processRequest(aggregatedHttpRequest); - verify(byteBuffer, times(1)).writeBytes(any(), (String)isNull(), any(Integer.class)); - - // Test more than 1MB json data - StringBuilder sb = new StringBuilder(1024*1024+10240); - for (int i =0; i < 12500; i++) { - sb.append(testString); - if (i+1 != 12500) - sb.append(","); + @Nested + class ChunkingCapableBuffer { + private String testString = "{\"key1\":\"value1\"},{\"key2\":\"value2\"},{\"key3\":\"value3\"},{\"key4\":\"value4\"},{\"key5\":\"value5\"}"; + private AggregatedHttpRequest aggregatedHttpRequest; + private HttpData httpData; + private String largeTestString; + + @BeforeEach + void setUp() { + byteBuffer = mock(Buffer.class); + when(byteBuffer.isByteBuffer()).thenReturn(true); + when(byteBuffer.getMaxRequestSize()).thenReturn(Optional.of(4 * 1024 * 1024)); + when(byteBuffer.getOptimalRequestSize()).thenReturn(Optional.of(1024 * 1024)); + + aggregatedHttpRequest = mock(AggregatedHttpRequest.class); + httpData = mock(HttpData.class); + + logHTTPService = new LogHTTPService(TEST_TIMEOUT_IN_MILLIS, byteBuffer, pluginMetrics); + + StringBuilder sb = new StringBuilder(1024 * 1024 + 10240); + for (int i = 0; i < 12500; i++) { + sb.append(testString); + if (i + 1 != 12500) + sb.append(","); + } + largeTestString = sb.toString(); + } + + @Test + void invalid_JSON_returns() { + // Test small json data + String exampleString = testString; + when(httpData.array()).thenReturn(exampleString.getBytes()); + InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + IOException actualException = assertThrows(IOException.class, () -> logHTTPService.processRequest(aggregatedHttpRequest)); + assertThat(actualException.getMessage(), containsString("Needs to be json array")); + } + + @Test + void too_small_to_chunk() throws Exception { + // Test small json data + String exampleString = "[ " + testString + "]"; + when(httpData.array()).thenReturn(exampleString.getBytes()); + InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + logHTTPService.processRequest(aggregatedHttpRequest); + verify(byteBuffer, times(1)).writeBytes(any(), (String) isNull(), eq(TEST_TIMEOUT_IN_MILLIS)); + } + + @Test + void chunking_with_1mb() throws Exception { + // Test more than 1MB json data + String exampleString = "[" + largeTestString + "]"; + when(httpData.array()).thenReturn(exampleString.getBytes()); + ByteArrayInputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + logHTTPService.processRequest(aggregatedHttpRequest); + verify(byteBuffer, times(2)).writeBytes(any(), anyString(), eq(TEST_TIMEOUT_IN_MILLIS)); + } + + @Test + void chunking_with_4mb() throws Exception { + // Test more than 4MB json data + String exampleString = "[" + largeTestString + "," + largeTestString + "," + largeTestString + "," + largeTestString + "]"; + when(httpData.array()).thenReturn(exampleString.getBytes()); + ByteArrayInputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + logHTTPService.processRequest(aggregatedHttpRequest); + verify(byteBuffer, times(5)).writeBytes(any(), anyString(), eq(TEST_TIMEOUT_IN_MILLIS)); + } + + @Test + void chunking_with_4mb_single_json_object_should_throw() { + String exampleString; + // Test more than 4MB single json object, should throw exception + int length = 3 * 1024 * 1024; + StringBuilder sb = new StringBuilder(length); + for (int i = 0; i < length; i++) { + sb.append('A'); + } + String value = sb.toString(); + exampleString = "[{\"key\":\"" + value + "\"}]"; + + when(httpData.array()).thenReturn(exampleString.getBytes()); + ByteArrayInputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + assertThrows(RuntimeException.class, () -> logHTTPService.processRequest(aggregatedHttpRequest)); } - String largeTestString = sb.toString(); - exampleString = "[" + largeTestString + "]"; - when(httpData.array()).thenReturn(exampleString.getBytes()); - stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); - when(httpData.toInputStream()).thenReturn(stream); - - when(aggregatedHttpRequest.content()).thenReturn(httpData); - logHTTPService.processRequest(aggregatedHttpRequest); - verify(byteBuffer, times(2)).writeBytes(any(), anyString(), any(Integer.class)); - // Test more than 4MB json data - exampleString = "[" + largeTestString + "," + largeTestString + ","+largeTestString +","+largeTestString+"]"; - when(httpData.array()).thenReturn(exampleString.getBytes()); - stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); - when(httpData.toInputStream()).thenReturn(stream); - - when(aggregatedHttpRequest.content()).thenReturn(httpData); - logHTTPService.processRequest(aggregatedHttpRequest); - verify(byteBuffer, times(7)).writeBytes(any(), anyString(), any(Integer.class)); - - // Test more than 4MB single json object, should throw exception - int length = 3*1024*1024; - sb = new StringBuilder(length); - for (int i = 0; i < length; i++) { - sb.append('A'); + } + + @Nested + class NonChunkingByteBuffer { + private String testString = "{\"key1\":\"value1\"},{\"key2\":\"value2\"},{\"key3\":\"value3\"},{\"key4\":\"value4\"},{\"key5\":\"value5\"}"; + private AggregatedHttpRequest aggregatedHttpRequest; + private HttpData httpData; + private String largeTestString; + + @BeforeEach + void setUp() { + byteBuffer = mock(Buffer.class); + when(byteBuffer.isByteBuffer()).thenReturn(true); + + aggregatedHttpRequest = mock(AggregatedHttpRequest.class); + httpData = mock(HttpData.class); + + logHTTPService = new LogHTTPService(TEST_TIMEOUT_IN_MILLIS, byteBuffer, pluginMetrics); + + StringBuilder sb = new StringBuilder(1024 * 1024 + 10240); + for (int i = 0; i < 12500; i++) { + sb.append(testString); + if (i + 1 != 12500) + sb.append(","); + } + largeTestString = sb.toString(); } - String value = sb.toString(); - exampleString = "[{\"key\":\""+value+"\"}]"; - when(httpData.array()).thenReturn(exampleString.getBytes()); - stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); - when(httpData.toInputStream()).thenReturn(stream); - when(aggregatedHttpRequest.content()).thenReturn(httpData); - assertThrows(RuntimeException.class, () -> logHTTPService.processRequest(aggregatedHttpRequest)); + @Test + void invalid_JSON_returns() { + // Test small json data + String exampleString = testString; + InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + IOException actualException = assertThrows(IOException.class, () -> logHTTPService.processRequest(aggregatedHttpRequest)); + assertThat(actualException.getMessage(), containsString("Needs to be json array")); + } + + @Test + void chunking_with_1mb() throws Exception { + // Test more than 1MB json data + String exampleString = "[" + largeTestString + "]"; + byte[] bytes = exampleString.getBytes(); + when(httpData.array()).thenReturn(bytes); + ByteArrayInputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + logHTTPService.processRequest(aggregatedHttpRequest); + ArgumentCaptor byteContentCaptor = ArgumentCaptor.forClass(byte[].class); + verify(byteBuffer).writeBytes(byteContentCaptor.capture(), isNull(), eq(TEST_TIMEOUT_IN_MILLIS)); + + final byte[] actualBytesWritten = byteContentCaptor.getValue(); + assertThat(actualBytesWritten.length, equalTo(bytes.length)); + } + + @Test + void chunking_with_4mb() throws Exception { + // Test more than 4MB json data + String exampleString = "[" + largeTestString + "," + largeTestString + "," + largeTestString + "," + largeTestString + "]"; + byte[] bytes = exampleString.getBytes(); + when(httpData.array()).thenReturn(bytes); + ByteArrayInputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8)); + when(httpData.toInputStream()).thenReturn(stream); + + when(aggregatedHttpRequest.content()).thenReturn(httpData); + logHTTPService.processRequest(aggregatedHttpRequest); + ArgumentCaptor byteContentCaptor = ArgumentCaptor.forClass(byte[].class); + verify(byteBuffer).writeBytes(byteContentCaptor.capture(), isNull(), eq(TEST_TIMEOUT_IN_MILLIS)); + + final byte[] actualBytesWritten = byteContentCaptor.getValue(); + assertThat(actualBytesWritten.length, equalTo(bytes.length)); + assertThat(actualBytesWritten, equalTo(bytes)); + } } + private AggregatedHttpRequest generateRandomValidHTTPRequest(int numJson) throws JsonProcessingException, ExecutionException, InterruptedException { RequestHeaders requestHeaders = RequestHeaders.builder() diff --git a/data-prepper-plugins/kafka-plugins/README.md b/data-prepper-plugins/kafka-plugins/README.md index f4664cd0ae..eaf0a4d52b 100644 --- a/data-prepper-plugins/kafka-plugins/README.md +++ b/data-prepper-plugins/kafka-plugins/README.md @@ -50,6 +50,17 @@ Then run ./gradlew data-prepper-plugins:kafka-plugins:integrationTest -Dtests.kafka.bootstrap_servers=localhost:9092 -Dtests.kafka.authconfig.username=admin -Dtests.kafka.authconfig.password=admin --tests KafkaSourceSaslPlainTextIT ``` +##### Run SASL SCRAM integration tests + +First run Kafka with SASL_SCRAM username, password and mechanism: +``` +docker compose --project-directory data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram --env-file data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram/.env up -d +``` +Then run +``` +./gradlew data-prepper-plugins:kafka-plugins:integrationTest -Dtests.kafka.bootstrap_servers=localhost:9092 -Dtests.kafka.authconfig.username=admin -Dtests.kafka.authconfig.password=admin -Dtests.kafka.authconfig.mechanism=SCRAM-SHA-512 --tests KafkaSourceSaslScramIT +``` + See the Old integration tests section to run other tests. However, these are more involved. ### Old integration tests diff --git a/data-prepper-plugins/kafka-plugins/build.gradle b/data-prepper-plugins/kafka-plugins/build.gradle index 046aef949a..0ccb88b395 100644 --- a/data-prepper-plugins/kafka-plugins/build.gradle +++ b/data-prepper-plugins/kafka-plugins/build.gradle @@ -59,6 +59,7 @@ dependencies { testImplementation project(':data-prepper-test-common') testImplementation project(':data-prepper-plugins:blocking-buffer') testImplementation project(':data-prepper-core') + testImplementation project(':data-prepper-event') testImplementation project(':data-prepper-plugin-framework') testImplementation project(':data-prepper-pipeline-parser') testImplementation 'org.apache.kafka:kafka_2.13:3.6.1' @@ -134,6 +135,7 @@ task integrationTest(type: Test) { systemProperty 'tests.kafka.confluent.registry_url', System.getProperty('tests.kafka.confluent.registry_url') systemProperty 'tests.kafka.authconfig.username', System.getProperty('tests.kafka.authconfig.username') systemProperty 'tests.kafka.authconfig.password', System.getProperty('tests.kafka.authconfig.password') + systemProperty 'tests.kafka.authconfig.mechanism', System.getProperty('tests.kafka.authconfig.mechanism') systemProperty 'tests.kafka.kms_key', System.getProperty('tests.kafka.kms_key') filter { diff --git a/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceJsonTypeIT.java b/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceJsonTypeIT.java index 53eeefdf25..cad838eac8 100644 --- a/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceJsonTypeIT.java +++ b/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceJsonTypeIT.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; diff --git a/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceSaslPlainTextIT.java b/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceSaslPlainTextIT.java index 7f8e4aa436..b64c97aa5d 100644 --- a/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceSaslPlainTextIT.java +++ b/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceSaslPlainTextIT.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; diff --git a/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceSaslScramIT.java b/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceSaslScramIT.java new file mode 100644 index 0000000000..f4b3001615 --- /dev/null +++ b/data-prepper-plugins/kafka-plugins/src/integrationTest/java/org/opensearch/dataprepper/plugins/kafka/source/KafkaSourceSaslScramIT.java @@ -0,0 +1,272 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.kafka.source; + +import io.micrometer.core.instrument.Counter; +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.kafka.clients.admin.AdminClient; +import org.apache.kafka.clients.admin.AdminClientConfig; +import org.apache.kafka.clients.admin.NewTopic; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.common.config.SaslConfigs; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventMetadata; +import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.kafka.configuration.AuthConfig; +import org.opensearch.dataprepper.plugins.kafka.configuration.EncryptionConfig; +import org.opensearch.dataprepper.plugins.kafka.configuration.EncryptionType; +import org.opensearch.dataprepper.plugins.kafka.configuration.KafkaKeyMode; +import org.opensearch.dataprepper.plugins.kafka.configuration.ScramAuthConfig; +import org.opensearch.dataprepper.plugins.kafka.configuration.TopicConfig; +import org.opensearch.dataprepper.plugins.kafka.configuration.TopicConsumerConfig; +import org.opensearch.dataprepper.plugins.kafka.extension.KafkaClusterConfigSupplier; +import org.opensearch.dataprepper.plugins.kafka.util.MessageFormat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.atomic.AtomicBoolean; + +import static org.awaitility.Awaitility.await; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class KafkaSourceSaslScramIT { + private static final Logger LOG = LoggerFactory.getLogger(KafkaSourceSaslScramIT.class); + private static final int TEST_ID = 123456; + @Mock + private KafkaSourceConfig sourceConfig; + + @Mock + private ScramAuthConfig scramAuthConfig; + + @Mock + private AuthConfig.SaslAuthConfig saslAuthConfig; + + @Mock + private AuthConfig authConfig; + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private AcknowledgementSetManager acknowledgementSetManager; + + @Mock + private PipelineDescription pipelineDescription; + + @Mock + private Buffer> buffer; + + private List topicList; + + @Mock + private EncryptionConfig encryptionConfig; + + @Mock + private KafkaClusterConfigSupplier kafkaClusterConfigSupplier; + + @Mock + private TopicConsumerConfig jsonTopic; + + @Mock + private PluginConfigObservable pluginConfigObservable; + + private KafkaSource kafkaSource; + + private Counter counter; + + private List receivedRecords; + + private String bootstrapServers; + private String testKey; + private String testTopic; + private String testGroup; + + public KafkaSource createObjectUnderTest() { + return new KafkaSource(sourceConfig, pluginMetrics, acknowledgementSetManager, pipelineDescription, kafkaClusterConfigSupplier, pluginConfigObservable); + } + + @BeforeEach + public void setup() throws Throwable { + sourceConfig = mock(KafkaSourceConfig.class); + when(sourceConfig.getAuthConfig()).thenReturn(authConfig); + when(authConfig.getSaslAuthConfig()).thenReturn(saslAuthConfig); + when(saslAuthConfig.getScramAuthConfig()).thenReturn(scramAuthConfig); + String username = System.getProperty("tests.kafka.authconfig.username"); + String password = System.getProperty("tests.kafka.authconfig.password"); + String mechanism = System.getProperty("tests.kafka.authconfig.mechanism"); + when(scramAuthConfig.getUsername()).thenReturn(username); + when(scramAuthConfig.getPassword()).thenReturn(password); + when(scramAuthConfig.getMechanism()).thenReturn(mechanism); + pluginMetrics = mock(PluginMetrics.class); + counter = mock(Counter.class); + buffer = mock(Buffer.class); + encryptionConfig = mock(EncryptionConfig.class); + receivedRecords = new ArrayList<>(); + ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); + acknowledgementSetManager = new DefaultAcknowledgementSetManager(executor); + pipelineDescription = mock(PipelineDescription.class); + when(sourceConfig.getAcknowledgementsEnabled()).thenReturn(false); + when(sourceConfig.getSchemaConfig()).thenReturn(null); + when(pluginMetrics.counter(anyString())).thenReturn(counter); + when(pipelineDescription.getPipelineName()).thenReturn("testPipeline"); + try { + doAnswer(args -> { + Collection> bufferedRecords = (Collection>) args.getArgument(0); + receivedRecords.addAll(bufferedRecords); + return null; + }).when(buffer).writeAll(any(Collection.class), any(Integer.class)); + } catch (Exception e) { + } + + testKey = RandomStringUtils.randomAlphabetic(5); + testGroup = "TestGroup_" + RandomStringUtils.randomAlphabetic(6); + testTopic = "TestJsonTopic_" + RandomStringUtils.randomAlphabetic(5); + jsonTopic = mock(TopicConsumerConfig.class); + when(jsonTopic.getName()).thenReturn(testTopic); + when(jsonTopic.getGroupId()).thenReturn(testGroup); + when(jsonTopic.getWorkers()).thenReturn(1); + when(jsonTopic.getMaxPollInterval()).thenReturn(Duration.ofSeconds(5)); + when(jsonTopic.getSessionTimeOut()).thenReturn(Duration.ofSeconds(15)); + when(jsonTopic.getHeartBeatInterval()).thenReturn(Duration.ofSeconds(3)); + when(jsonTopic.getAutoCommit()).thenReturn(false); + when(jsonTopic.getSerdeFormat()).thenReturn(MessageFormat.JSON); + when(jsonTopic.getAutoOffsetReset()).thenReturn("earliest"); + when(jsonTopic.getThreadWaitingTime()).thenReturn(Duration.ofSeconds(1)); + bootstrapServers = System.getProperty("tests.kafka.bootstrap_servers"); + LOG.info("Using Kafka bootstrap servers: {}", bootstrapServers); + when(sourceConfig.getBootstrapServers()).thenReturn(Collections.singletonList(bootstrapServers)); + when(sourceConfig.getEncryptionConfig()).thenReturn(encryptionConfig); + + Properties props = new Properties(); + props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + AtomicBoolean created = new AtomicBoolean(false); + Throwable[] createThrowable = new Throwable[1]; + configureJasConfForSASLPlainText(props); + try (AdminClient adminClient = AdminClient.create(props)) { + adminClient.createTopics( + Collections.singleton(new NewTopic(testTopic, 1, (short) 1))) + .all().whenComplete((v, throwable) -> { + created.set(true); + createThrowable[0] = throwable; + }); + } + await().atMost(Duration.ofSeconds(30)) + .until(created::get); + + if(createThrowable[0] != null) + throw createThrowable[0]; + } + + @AfterEach + void tearDown() { + Properties props = new Properties(); + props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + configureJasConfForSASLPlainText(props); + AtomicBoolean deleted = new AtomicBoolean(false); + Throwable[] createThrowable = new Throwable[1]; + final String topicName = jsonTopic.getName(); + try (AdminClient adminClient = AdminClient.create(props)) { + adminClient.deleteTopics(Collections.singleton(topicName)) + .all().whenComplete((v, throwable) -> deleted.set(true)); + } + await().atMost(Duration.ofSeconds(30)) + .until(deleted::get); + } + + @Test + public void TestJsonRecordsWithNullKey() throws Exception { + final int numRecords = 1; + when(encryptionConfig.getType()).thenReturn(EncryptionType.NONE); + when(jsonTopic.getConsumerMaxPollRecords()).thenReturn(numRecords); + when(jsonTopic.getKafkaKeyMode()).thenReturn(KafkaKeyMode.INCLUDE_AS_FIELD); + when(sourceConfig.getTopics()).thenReturn((List) List.of(jsonTopic)); + kafkaSource = createObjectUnderTest(); + + kafkaSource.start(buffer); + testKey = null; + produceJsonRecords(bootstrapServers, testTopic, numRecords); + int numRetries = 0; + while (numRetries++ < 10 && (receivedRecords.size() != numRecords)) { + Thread.sleep(1000); + } + assertThat(receivedRecords.size(), equalTo(numRecords)); + for (int i = 0; i < numRecords; i++) { + Record record = receivedRecords.get(i); + Event event = (Event) record.getData(); + EventMetadata metadata = event.getMetadata(); + Map map = event.toMap(); + assertThat(map.get("name"), equalTo("testName" + i)); + assertThat(map.get("id"), equalTo(TEST_ID + i)); + assertThat(map.get("status"), equalTo(true)); + assertThat(map.get("kafka_key"), equalTo(null)); + assertThat(metadata.getAttributes().get("kafka_topic"), equalTo(testTopic)); + assertThat(metadata.getAttributes().get("kafka_partition"), equalTo("0")); + } + } + + public void produceJsonRecords(final String servers, final String topicName, final int numRecords) { + Properties props = new Properties(); + configureJasConfForSASLPlainText(props); + props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers); + props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, + org.apache.kafka.common.serialization.StringSerializer.class); + props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, + org.apache.kafka.common.serialization.StringSerializer.class); + KafkaProducer producer = new KafkaProducer(props); + for (int i = 0; i < numRecords; i++) { + String value = "{\"name\":\"testName" + i + "\", \"id\":" + (TEST_ID + i) + ", \"status\":true}"; + ProducerRecord record = + new ProducerRecord<>(topicName, testKey, value); + producer.send(record); + try { + Thread.sleep(100); + } catch (Exception e) { + } + } + producer.close(); + } + + private void configureJasConfForSASLPlainText(final Properties props) { + String username = System.getProperty("tests.kafka.authconfig.username"); + String password = System.getProperty("tests.kafka.authconfig.password"); + String mechanism = System.getProperty("tests.kafka.authconfig.mechanism"); + + String jasConf = "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"" + username + "\" password=\"" + password + "\";"; + props.put(SaslConfigs.SASL_JAAS_CONFIG, jasConf); + props.put(SaslConfigs.SASL_MECHANISM, mechanism); + props.put(AdminClientConfig.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT"); + } +} diff --git a/data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram/.env b/data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram/.env new file mode 100644 index 0000000000..39fe6575ac --- /dev/null +++ b/data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram/.env @@ -0,0 +1 @@ +KAFKA_VERSION=3.5.1 \ No newline at end of file diff --git a/data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram/docker-compose.yml b/data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram/docker-compose.yml new file mode 100644 index 0000000000..df45180d07 --- /dev/null +++ b/data-prepper-plugins/kafka-plugins/src/integrationTest/resources/kafka/kraft/sasl-scram/docker-compose.yml @@ -0,0 +1,40 @@ +# https://github.com/bitnami/containers/blob/6e283cd75537c087b3deac9092fe13bfaab53106/bitnami/kafka/docker-compose.yml +# Copyright VMware, Inc. +# SPDX-License-Identifier: APACHE-2.0 + +version: "2" + +services: + kafka: + image: docker.io/bitnami/kafka:${KAFKA_VERSION} + ports: + - "9092:9092" + environment: + # KRaft settings + - KAFKA_CFG_NODE_ID=0 + - KAFKA_CFG_PROCESS_ROLES=controller,broker + - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 + # Listeners + - KAFKA_CFG_LISTENERS=SASL_SCRAM://:9092,CONTROLLER://:9093 + - KAFKA_CFG_ADVERTISED_LISTENERS=SASL_SCRAM://localhost:9092 + - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:SASL_PLAINTEXT,SASL_SCRAM:SASL_PLAINTEXT + - KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN,SCRAM-SHA-512 + - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=SASL_SCRAM + - KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=SCRAM-SHA-512 + - KAFKA_INTER_BROKER_USER=admin + - KAFKA_INTER_BROKER_PASSWORD=admin + - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER + - KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL=PLAIN + - KAFKA_CONTROLLER_USER=kcu + - KAFKA_CONTROLLER_PASSWORD=kcu + command: + - /bin/bash + - -c + # The server.properties must be altered in this way bc there are no equivalent env vars + - | + # We need a new line before the next lines to prevent errors + echo "" >> /opt/bitnami/kafka/config/server.properties + echo "authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer" \ + >> /opt/bitnami/kafka/config/server.properties + echo "super.users=User:admin;User:kcu" >> /opt/bitnami/kafka/config/server.properties + /opt/bitnami/scripts/kafka/run.sh diff --git a/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfig.java b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfig.java index 9f04b42b3e..75196d2a69 100644 --- a/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfig.java +++ b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfig.java @@ -23,6 +23,9 @@ public static class SaslAuthConfig { @JsonProperty("plaintext") private PlainTextAuthConfig plainTextAuthConfig; + @JsonProperty("scram") + private ScramAuthConfig scramAuthConfig; + @JsonProperty("oauth") private OAuthConfig oAuthConfig; @@ -40,6 +43,10 @@ public PlainTextAuthConfig getPlainTextAuthConfig() { return plainTextAuthConfig; } + public ScramAuthConfig getScramAuthConfig() { + return scramAuthConfig; + } + public OAuthConfig getOAuthConfig() { return oAuthConfig; } @@ -48,9 +55,9 @@ public String getSslEndpointAlgorithm() { return sslEndpointAlgorithm; } - @AssertTrue(message = "Only one of AwsIam or oAuth or PlainText auth config must be specified") + @AssertTrue(message = "Only one of AwsIam or oAuth or SCRAM or PlainText auth config must be specified") public boolean hasOnlyOneConfig() { - return Stream.of(awsIamAuthConfig, plainTextAuthConfig, oAuthConfig).filter(n -> n != null).count() == 1; + return Stream.of(awsIamAuthConfig, plainTextAuthConfig, oAuthConfig, scramAuthConfig).filter(n -> n != null).count() == 1; } } diff --git a/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/configuration/ScramAuthConfig.java b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/configuration/ScramAuthConfig.java new file mode 100644 index 0000000000..8bb5bdb514 --- /dev/null +++ b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/configuration/ScramAuthConfig.java @@ -0,0 +1,36 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.kafka.configuration; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * * A helper class that helps to read sasl SCRAM auth configuration values from + * pipelines.yaml + */ +public class ScramAuthConfig { + + @JsonProperty("username") + private String username; + + @JsonProperty("password") + private String password; + + @JsonProperty("mechanism") + private String mechanism; + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public String getMechanism() { + return mechanism; + } +} diff --git a/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumer.java b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumer.java index 9e6a979d8e..8a64c42e3b 100644 --- a/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumer.java +++ b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumer.java @@ -357,7 +357,7 @@ public void run() { LOG.debug("Pause and skip consuming from Kafka topic due to an external condition: {}", pauseConsumePredicate); paused = true; consumer.pause(consumer.assignment()); - Thread.sleep(10000); + Thread.sleep(1000); continue; } else if(paused) { LOG.debug("Resume consuming from Kafka topic."); diff --git a/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/util/KafkaSecurityConfigurer.java b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/util/KafkaSecurityConfigurer.java index 402f248ddf..f7c967a7a7 100644 --- a/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/util/KafkaSecurityConfigurer.java +++ b/data-prepper-plugins/kafka-plugins/src/main/java/org/opensearch/dataprepper/plugins/kafka/util/KafkaSecurityConfigurer.java @@ -19,6 +19,7 @@ import org.opensearch.dataprepper.plugins.kafka.configuration.EncryptionType; import org.opensearch.dataprepper.plugins.kafka.configuration.PlainTextAuthConfig; import org.opensearch.dataprepper.plugins.kafka.configuration.SchemaRegistryType; +import org.opensearch.dataprepper.plugins.kafka.configuration.ScramAuthConfig; import org.apache.kafka.clients.consumer.ConsumerConfig; import software.amazon.awssdk.services.kafka.KafkaClient; @@ -131,6 +132,21 @@ private static void setPlainTextAuthProperties(final Properties properties, fina } } + private static void setScramAuthProperties(final Properties properties, final ScramAuthConfig scramAuthConfig, + final EncryptionConfig encryptionConfig) { + final String username = scramAuthConfig.getUsername(); + final String password = scramAuthConfig.getPassword(); + final String mechanism = scramAuthConfig.getMechanism(); + properties.put(SASL_MECHANISM, mechanism); + properties.put(SASL_JAAS_CONFIG, "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"" + username + "\" password=\"" + password + "\";"); + if (checkEncryptionType(encryptionConfig, EncryptionType.SSL)) { + properties.put(SECURITY_PROTOCOL, "SASL_SSL"); + setSecurityProtocolSSLProperties(properties, encryptionConfig); + } else { // EncryptionType.NONE + properties.put(SECURITY_PROTOCOL, "SASL_PLAINTEXT"); + } + } + private static void setSecurityProtocolSSLProperties(final Properties properties, final EncryptionConfig encryptionConfig) { if (Objects.nonNull(encryptionConfig.getCertificate())) { setCustomSslProperties(properties, encryptionConfig.getCertificate()); @@ -329,6 +345,7 @@ public static void setAuthProperties(final Properties properties, final KafkaClu final AuthConfig.SaslAuthConfig saslAuthConfig = authConfig.getSaslAuthConfig(); if (Objects.nonNull(saslAuthConfig)) { final AwsIamAuthConfig awsIamAuthConfig = saslAuthConfig.getAwsIamAuthConfig(); + final ScramAuthConfig scramAuthConfig = saslAuthConfig.getScramAuthConfig(); final PlainTextAuthConfig plainTextAuthConfig = saslAuthConfig.getPlainTextAuthConfig(); if (Objects.nonNull(awsIamAuthConfig)) { @@ -338,7 +355,9 @@ public static void setAuthProperties(final Properties properties, final KafkaClu setAwsIamAuthProperties(properties, awsIamAuthConfig, awsConfig); } else if (Objects.nonNull(saslAuthConfig.getOAuthConfig())) { setOauthProperties(kafkaClusterAuthConfig, properties); - } else if (Objects.nonNull(plainTextAuthConfig) && Objects.nonNull(kafkaClusterAuthConfig.getEncryptionConfig())) { + } else if (Objects.nonNull(scramAuthConfig) && Objects.nonNull(kafkaClusterAuthConfig.getEncryptionConfig())) { + setScramAuthProperties(properties, scramAuthConfig, kafkaClusterAuthConfig.getEncryptionConfig()); + } else if (Objects.nonNull(plainTextAuthConfig) && Objects.nonNull(kafkaClusterAuthConfig.getEncryptionConfig())) { setPlainTextAuthProperties(properties, plainTextAuthConfig, kafkaClusterAuthConfig.getEncryptionConfig()); } else { throw new RuntimeException("No SASL auth config specified"); diff --git a/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfigTest.java b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfigTest.java index ed23995a64..621d46afdd 100644 --- a/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfigTest.java +++ b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/configuration/AuthConfigTest.java @@ -45,6 +45,9 @@ class AuthConfigTest { @Mock OAuthConfig testOAuthConfig; + @Mock + ScramAuthConfig testScramConfig; + @Mock PlainTextAuthConfig testPlainTextConfig; @@ -78,6 +81,16 @@ void testPlainTextAuthConfig() { assertThat(authConfig.getSaslAuthConfig().getOAuthConfig(), notNullValue()); } + @Test + void testScramAuthConfig() { + assertThat(authConfig, notNullValue()); + assertThat(authConfig.getSaslAuthConfig(), notNullValue()); + assertThat(authConfig.getSaslAuthConfig().getScramAuthConfig(), notNullValue()); + assertThat(authConfig.getSaslAuthConfig().getScramAuthConfig(), hasProperty("username")); + assertThat(authConfig.getSaslAuthConfig().getScramAuthConfig(), hasProperty("password")); + assertThat(authConfig.getSaslAuthConfig().getScramAuthConfig(), hasProperty("mechanism")); + } + @Test void testSaslAuthConfigWithPlainText() throws NoSuchFieldException, IllegalAccessException { saslAuthConfig = mock(AuthConfig.SaslAuthConfig.class); @@ -88,6 +101,16 @@ void testSaslAuthConfigWithPlainText() throws NoSuchFieldException, IllegalAcces assertThat(authConfig.getSaslAuthConfig().getPlainTextAuthConfig(), equalTo(testPlainTextConfig)); } + @Test + void testSaslAuthConfigWithScram() throws NoSuchFieldException, IllegalAccessException { + saslAuthConfig = mock(AuthConfig.SaslAuthConfig.class); + testScramConfig = mock(ScramAuthConfig.class); + when(saslAuthConfig.getScramAuthConfig()).thenReturn(testScramConfig); + setField(AuthConfig.class, authConfig, "saslAuthConfig", saslAuthConfig); + assertThat(authConfig.getSaslAuthConfig(), equalTo(saslAuthConfig)); + assertThat(authConfig.getSaslAuthConfig().getScramAuthConfig(), equalTo(testScramConfig)); + } + @Test void testSaslAuthConfigWithMskIam() throws NoSuchFieldException, IllegalAccessException { saslAuthConfig = mock(AuthConfig.SaslAuthConfig.class); diff --git a/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/configuration/ScramAuthConfigTest.java b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/configuration/ScramAuthConfigTest.java new file mode 100644 index 0000000000..522df2d203 --- /dev/null +++ b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/configuration/ScramAuthConfigTest.java @@ -0,0 +1,60 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.kafka.configuration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.opensearch.dataprepper.plugins.kafka.source.KafkaSourceConfig; +import org.yaml.snakeyaml.Yaml; + +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class ScramAuthConfigTest { + + @Mock + ScramAuthConfig scramAuthConfig; + private String username; + private String password; + private String mechanism; + @BeforeEach + void setUp() throws IOException { + scramAuthConfig = new ScramAuthConfig(); + Yaml yaml = new Yaml(); + FileReader fileReader = new FileReader(getClass().getClassLoader().getResource("sample-pipelines.yaml").getFile()); + Object data = yaml.load(fileReader); + ObjectMapper mapper = new ObjectMapper(); + if (data instanceof Map) { + Map propertyMap = (Map) data; + Map logPipelineMap = (Map) propertyMap.get("log-pipeline"); + Map sourceMap = (Map) logPipelineMap.get("source"); + Map kafkaConfigMap = (Map) sourceMap.get("kafka"); + mapper.registerModule(new JavaTimeModule()); + String json = mapper.writeValueAsString(kafkaConfigMap); + Reader reader = new StringReader(json); + KafkaSourceConfig kafkaSourceConfig = mapper.readValue(reader, KafkaSourceConfig.class); + scramAuthConfig = kafkaSourceConfig.getAuthConfig().getSaslAuthConfig().getScramAuthConfig(); + username = scramAuthConfig.getUsername(); + password = scramAuthConfig.getPassword(); + mechanism = scramAuthConfig.getMechanism(); + } + } + + @Test + void testConfigValues() { + assertEquals(scramAuthConfig.getUsername(), username); + assertEquals(scramAuthConfig.getPassword(), password); + assertEquals(scramAuthConfig.getMechanism(), mechanism); + } +} diff --git a/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumerTest.java b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumerTest.java index ddc8d06144..8f0052afb5 100644 --- a/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumerTest.java +++ b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/consumer/KafkaCustomConsumerTest.java @@ -24,7 +24,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; import org.opensearch.dataprepper.model.CheckpointState; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; diff --git a/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/extension/KafkaClusterConfigTest.java b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/extension/KafkaClusterConfigTest.java index bd71634a7a..bc1b31e215 100644 --- a/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/extension/KafkaClusterConfigTest.java +++ b/data-prepper-plugins/kafka-plugins/src/test/java/org/opensearch/dataprepper/plugins/kafka/extension/KafkaClusterConfigTest.java @@ -12,7 +12,7 @@ import org.opensearch.dataprepper.model.types.ByteCount; import org.opensearch.dataprepper.pipeline.parser.ByteCountDeserializer; import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; -import org.opensearch.dataprepper.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; import org.opensearch.dataprepper.plugins.kafka.configuration.AwsIamAuthConfig; import org.opensearch.dataprepper.plugins.kafka.configuration.EncryptionType; import org.opensearch.dataprepper.plugins.kafka.configuration.MskBrokerConnectionType; diff --git a/data-prepper-plugins/kafka-plugins/src/test/resources/sample-pipelines.yaml b/data-prepper-plugins/kafka-plugins/src/test/resources/sample-pipelines.yaml index 17a75e3a94..707968b508 100644 --- a/data-prepper-plugins/kafka-plugins/src/test/resources/sample-pipelines.yaml +++ b/data-prepper-plugins/kafka-plugins/src/test/resources/sample-pipelines.yaml @@ -41,6 +41,10 @@ log-pipeline: plaintext: username: 5UH4NID4OENKDIBI password: jCmncn77F9asfox3yhgZLCEwQ5fx8pKiXnszMqdt0y1GLrdZO1V1iz95aIe1UubX + scram: + username: 5UH4NID4OENKDIBI + password: jCmncn77F9asfox3yhgZLCEwQ5fx8pKiXnszMqdt0y1GLrdZO1V1iz95aIe1UubX + mechanism: SCRAM-SHA-512 oauth: oauth_client_id: 0oa9wc21447Pc5vsV5d7 oauth_client_secret: aGmOfHqIEvBJGDxXAOOcatiE9PvsPgoEePx8IPPa diff --git a/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessor.java b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessor.java index c42e015829..c7203bbbc1 100644 --- a/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessor.java +++ b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessor.java @@ -55,10 +55,6 @@ public class KeyValueProcessor extends AbstractProcessor, Record excludeKeysSet = new HashSet(); private final HashMap defaultValuesMap = new HashMap<>(); private final Set defaultValuesSet = new HashSet(); - private final String lowercaseKey = "lowercase"; - private final String uppercaseKey = "uppercase"; - private final String capitalizeKey = "capitalize"; - private final Set validTransformOptionSet = Set.of("", lowercaseKey, uppercaseKey, capitalizeKey); private final String whitespaceStrict = "strict"; private final String whitespaceLenient = "lenient"; private final Set validWhitespaceSet = Set.of(whitespaceLenient, whitespaceStrict); @@ -66,6 +62,7 @@ public class KeyValueProcessor extends AbstractProcessor, Record bracketSet = Set.of('[', ']', '(', ')', '<', '>'); private final List tagsOnFailure; private final Character stringLiteralCharacter; + private final String keyPrefix; @DataPrepperPluginConstructor public KeyValueProcessor(final PluginMetrics pluginMetrics, @@ -167,14 +164,6 @@ public KeyValueProcessor(final PluginMetrics pluginMetrics, validateKeySets(includeKeysSet, excludeKeysSet, defaultValuesSet); - if (!validTransformOptionSet.contains(keyValueProcessorConfig.getTransformKey())) { - throw new IllegalArgumentException(String.format("The transform_key value: %s is not a valid option", keyValueProcessorConfig.getTransformKey())); - } - - if (!(validWhitespaceSet.contains(keyValueProcessorConfig.getWhitespace()))) { - throw new IllegalArgumentException(String.format("The whitespace value: %s is not a valid option", keyValueProcessorConfig.getWhitespace())); - } - final Pattern boolCheck = Pattern.compile("true|false", Pattern.CASE_INSENSITIVE); final Matcher duplicateValueBoolMatch = boolCheck.matcher(String.valueOf(keyValueProcessorConfig.getSkipDuplicateValues())); final Matcher removeBracketsBoolMatch = boolCheck.matcher(String.valueOf(keyValueProcessorConfig.getRemoveBrackets())); @@ -202,6 +191,8 @@ public KeyValueProcessor(final PluginMetrics pluginMetrics, throw new InvalidPluginConfigurationException( String.format("key_value_when %s is not a valid expression statement", keyValueProcessorConfig.getKeyValueWhen())); } + + keyPrefix = keyValueProcessorConfig.getPrefix() != null ? keyValueProcessorConfig.getPrefix() : ""; } private String buildRegexFromCharacters(String s) { @@ -587,7 +578,7 @@ private Map executeConfigs(Map map) { if (keyValueProcessorConfig.getDeleteKeyRegex() != null && !Objects.equals(keyValueProcessorConfig.getDeleteKeyRegex(), "")) { key = key.replaceAll(keyValueProcessorConfig.getDeleteKeyRegex(), ""); } - key = keyValueProcessorConfig.getPrefix() + key; + key = keyPrefix + key; if (value != null && value instanceof String @@ -596,14 +587,14 @@ private Map executeConfigs(Map map) { value = ((String)value).replaceAll(keyValueProcessorConfig.getDeleteValueRegex(), ""); } - if (keyValueProcessorConfig.getWhitespace().equals(whitespaceStrict)) { + if (keyValueProcessorConfig.getWhitespace() == WhitespaceOption.STRICT) { String[] whitespace_arr = trimWhitespace(key, value); key = whitespace_arr[0]; value = whitespace_arr[1]; } if (keyValueProcessorConfig.getTransformKey() != null - && !keyValueProcessorConfig.getTransformKey().isEmpty()) { + && keyValueProcessorConfig.getTransformKey() != TransformOption.NONE) { key = transformKey(key); } @@ -636,14 +627,7 @@ private String[] trimWhitespace(String key, Object value) { } private String transformKey(String key) { - if (keyValueProcessorConfig.getTransformKey().equals(lowercaseKey)) { - key = key.toLowerCase(); - } else if (keyValueProcessorConfig.getTransformKey().equals(capitalizeKey)) { - key = key.substring(0, 1).toUpperCase() + key.substring(1); - } else if (keyValueProcessorConfig.getTransformKey().equals(uppercaseKey)) { - key = key.toUpperCase(); - } - return key; + return keyValueProcessorConfig.getTransformKey().getTransformFunction().apply(key); } private boolean validKeyAndValue(String key, Object value) { diff --git a/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorConfig.java b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorConfig.java index 34fd2c805b..c01c8adf72 100644 --- a/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorConfig.java +++ b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorConfig.java @@ -13,14 +13,23 @@ import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.Size; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; import java.util.ArrayList; import java.util.List; import java.util.Map; @JsonPropertyOrder -@JsonClassDescription("You can use the `key_value` processor to parse the specified field into key-value pairs.") +@JsonClassDescription("You can use the key_value processor to create structured data by parsing key-value pairs from strings.") public class KeyValueProcessorConfig { + static final String VALUE_GROUPING_KEY = "value_grouping"; + static final String FIELD_DELIMITER_REGEX_KEY = "field_delimiter_regex"; + static final String FIELD_SPLIT_CHARACTERS_KEY = "field_split_characters"; + static final String VALUE_SPLIT_CHARACTERS_KEY = "value_split_characters"; + static final String KEY_VALUE_DELIMITER_REGEX_KEY = "key_value_delimiter_regex"; + static final String REMOVE_BRACKETS_KEY = "remove_brackets"; + static final String SKIP_DUPLICATE_VALUES_KEY = "skip_duplicate_values"; + static final String WHITESPACE_KEY = "whitespace"; static final String DEFAULT_SOURCE = "message"; static final String DEFAULT_DESTINATION = "parsed_message"; public static final String DEFAULT_FIELD_SPLIT_CHARACTERS = "&"; @@ -29,177 +38,195 @@ public class KeyValueProcessorConfig { static final Map DEFAULT_DEFAULT_VALUES = Map.of(); public static final String DEFAULT_VALUE_SPLIT_CHARACTERS = "="; static final Object DEFAULT_NON_MATCH_VALUE = null; - static final String DEFAULT_PREFIX = ""; - static final String DEFAULT_DELETE_KEY_REGEX = ""; - static final String DEFAULT_DELETE_VALUE_REGEX = ""; - static final String DEFAULT_TRANSFORM_KEY = ""; - static final String DEFAULT_WHITESPACE = "lenient"; - static final boolean DEFAULT_SKIP_DUPLICATE_VALUES = false; - static final boolean DEFAULT_REMOVE_BRACKETS = false; - static final boolean DEFAULT_VALUE_GROUPING = false; - static final boolean DEFAULT_RECURSIVE = false; @NotEmpty - @JsonPropertyDescription("The message field to be parsed. Optional. Default value is `message`.") + @JsonProperty(defaultValue = DEFAULT_SOURCE) + @JsonPropertyDescription("The source field to parse for key-value pairs. The default value is message.") private String source = DEFAULT_SOURCE; - @JsonPropertyDescription("The destination field for the parsed source. The parsed source overwrites the " + - "preexisting data for that key. Optional. If `destination` is set to `null`, the parsed fields will be " + - "written to the root of the event. Default value is `parsed_message`.") + @JsonProperty(defaultValue = DEFAULT_DESTINATION) + @JsonPropertyDescription("The destination field for the structured data. The destination will be a structured map with the key value pairs extracted from the source. " + + "If destination is set to null, the parsed fields will be written to the root of the event. " + + "The default value is parsed_message.") private String destination = DEFAULT_DESTINATION; - @JsonProperty("field_delimiter_regex") - @JsonPropertyDescription("A regular expression specifying the delimiter that separates key-value pairs. " + - "Special regular expression characters such as `[` and `]` must be escaped with `\\\\`. " + - "Cannot be defined at the same time as `field_split_characters`. Optional. " + - "If this option is not defined, `field_split_characters` is used.") - private String fieldDelimiterRegex; - - @JsonProperty("field_split_characters") + @JsonProperty(value = FIELD_SPLIT_CHARACTERS_KEY, defaultValue = DEFAULT_FIELD_SPLIT_CHARACTERS) @JsonPropertyDescription("A string of characters specifying the delimiter that separates key-value pairs. " + - "Special regular expression characters such as `[` and `]` must be escaped with `\\\\`. " + - "Cannot be defined at the same time as `field_delimiter_regex`. Optional. Default value is `&`.") + "Special regular expression characters such as [ and ] must be escaped with \\\\. " + + "This field cannot be defined along with field_delimiter_regex. " + + "The default value is &.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = FIELD_DELIMITER_REGEX_KEY, allowedValues = {"null"}), + }) private String fieldSplitCharacters = DEFAULT_FIELD_SPLIT_CHARACTERS; - @JsonProperty("include_keys") - @JsonPropertyDescription("An array specifying the keys that should be added for parsing. " + - "By default, all keys will be added.") - @NotNull - private List includeKeys = DEFAULT_INCLUDE_KEYS; + @JsonProperty(FIELD_DELIMITER_REGEX_KEY) + @JsonPropertyDescription("A regular expression specifying the delimiter that separates key-value pairs. " + + "For example, to split on multiple & characters use &+. " + + "Special regular expression characters such as [ and ] must be escaped with \\\\. " + + "This field cannot be defined along with field_split_characters. " + + "If this option is not defined, the key_value processor will parse the source using field_split_characters.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = VALUE_GROUPING_KEY, allowedValues = {"false"}), + @AlsoRequired.Required(name = FIELD_SPLIT_CHARACTERS_KEY, allowedValues = {"null"}) + }) + private String fieldDelimiterRegex; - @JsonProperty("exclude_keys") - @JsonPropertyDescription("An array specifying the parsed keys that should not be added to the event. " + - "By default, no keys will be excluded.") - @NotNull - private List excludeKeys = DEFAULT_EXCLUDE_KEYS; + @JsonProperty(value = VALUE_SPLIT_CHARACTERS_KEY, defaultValue = DEFAULT_VALUE_SPLIT_CHARACTERS) + @JsonPropertyDescription("A string of characters specifying the delimiter that separates keys from their values within a key-value pair. " + + "Special regular expression characters such as [ and ] must be escaped with \\\\. " + + "This field cannot be defined along with key_value_delimiter_regex. " + + "The default value is =.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = KEY_VALUE_DELIMITER_REGEX_KEY, allowedValues = {"null"}) + }) + private String valueSplitCharacters = DEFAULT_VALUE_SPLIT_CHARACTERS; + + @JsonProperty(KEY_VALUE_DELIMITER_REGEX_KEY) + @JsonPropertyDescription("A regular expression specifying the delimiter that separates keys from their values within a key-value pair. " + + "For example, to split on multiple = characters use =+. " + + "Special regular expression characters such as [ and ] must be escaped with \\\\. " + + "This field cannot be defined along with value_split_characters. " + + "If this option is not defined, the key_value processor will parse the source using value_split_characters.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = VALUE_SPLIT_CHARACTERS_KEY, allowedValues = {"null"}) + }) + private String keyValueDelimiterRegex; - @JsonProperty("default_values") + @JsonProperty(value = "default_values", defaultValue = "{}") @JsonPropertyDescription("A map specifying the default keys and their values that should be added " + "to the event in case these keys do not exist in the source field being parsed. " + - "If the default key already exists in the message, the value is not changed. " + - "The `include_keys` filter will be applied to the message before `default_values`.") + "If the key was parsed from the source field that value will remain and the default value is not used. " + + "If the default values includes keys which are not part of include_keys those keys and value will be added to the event.") @NotNull private Map defaultValues = DEFAULT_DEFAULT_VALUES; - @JsonProperty("key_value_delimiter_regex") - @JsonPropertyDescription("A regular expression specifying the delimiter that separates the key and value " + - "within a key-value pair. Special regular expression characters such as `[` and `]` must be escaped with " + - "`\\\\`. This option cannot be defined at the same time as `value_split_characters`. Optional. " + - "If this option is not defined, `value_split_characters` is used.") - private String keyValueDelimiterRegex; - - @JsonProperty("value_split_characters") - @JsonPropertyDescription("A string of characters specifying the delimiter that separates the key and value within " + - "a key-value pair. Special regular expression characters such as `[` and `]` must be escaped with `\\\\`. " + - "Cannot be defined at the same time as `key_value_delimiter_regex`. Optional. Default value is `=`.") - private String valueSplitCharacters = DEFAULT_VALUE_SPLIT_CHARACTERS; - @JsonProperty("non_match_value") - @JsonPropertyDescription("When a key-value pair cannot be successfully split, the key-value pair is " + - "placed in the `key` field, and the specified value is placed in the `value` field. " + - "Optional. Default value is `null`.") + @JsonPropertyDescription("Configures a value to use when the processor cannot split a key-value pair. " + + "The value specified in this configuration is the value used in destination map. " + + "The default behavior is to drop the key-value pair.") private Object nonMatchValue = DEFAULT_NON_MATCH_VALUE; - @JsonPropertyDescription("A prefix to append before all keys. Optional. Default value is an empty string.") + @JsonProperty(value = "include_keys", defaultValue = "[]") + @JsonPropertyDescription("An array specifying the keys that should be included in the destination field. " + + "By default, all keys will be added.") @NotNull - private String prefix = DEFAULT_PREFIX; + private List includeKeys = DEFAULT_INCLUDE_KEYS; - @JsonProperty("delete_key_regex") - @JsonPropertyDescription("A regular expression specifying the characters to delete from the key. " + - "Special regular expression characters such as `[` and `]` must be escaped with `\\\\`. Cannot be an " + - "empty string. Optional. No default value.") + @JsonProperty(value = "exclude_keys", defaultValue = "[]") + @JsonPropertyDescription("An array specifying the parsed keys that should be excluded from the destination field. " + + "By default, no keys will be excluded.") @NotNull - private String deleteKeyRegex = DEFAULT_DELETE_KEY_REGEX; + private List excludeKeys = DEFAULT_EXCLUDE_KEYS; + + @JsonPropertyDescription("A prefix to append before all keys. By default no prefix is added.") + private String prefix = null; + + @JsonProperty("delete_key_regex") + @JsonPropertyDescription("A regular expression specifying characters to delete from the key. " + + "Special regular expression characters such as [ and ] must be escaped with \\\\. " + + "Cannot be an empty string. " + + "By default, no characters are deleted from the key.") + private String deleteKeyRegex; @JsonProperty("delete_value_regex") - @JsonPropertyDescription("A regular expression specifying the characters to delete from the value. " + - "Special regular expression characters such as `[` and `]` must be escaped with `\\\\`. " + - "Cannot be an empty string. Optional. No default value.") - @NotNull - private String deleteValueRegex = DEFAULT_DELETE_VALUE_REGEX; + @JsonPropertyDescription("A regular expression specifying characters to delete from the value. " + + "Special regular expression characters such as [ and ] must be escaped with \\\\. " + + "Cannot be an empty string. " + + "By default, no characters are deleted from the value.") + private String deleteValueRegex; - @JsonProperty("transform_key") - @JsonPropertyDescription("When to lowercase, uppercase, or capitalize keys.") - @NotNull - private String transformKey = DEFAULT_TRANSFORM_KEY; + @JsonProperty(value = "transform_key", defaultValue = "none") + @JsonPropertyDescription("Allows transforming the key's name such as making the name all lowercase.") + private TransformOption transformKey = TransformOption.NONE; - @JsonProperty("whitespace") + @JsonProperty(value = WHITESPACE_KEY, defaultValue = "lenient") @JsonPropertyDescription("Specifies whether to be lenient or strict with the acceptance of " + - "unnecessary white space surrounding the configured value-split sequence. Default is `lenient`.") + "unnecessary white space surrounding the configured value-split sequence. " + + "In this case, strict means that whitespace is trimmed and lenient means it is retained in the key name and in the value. " + + "Default is lenient.") @NotNull - private String whitespace = DEFAULT_WHITESPACE; + private WhitespaceOption whitespace = WhitespaceOption.LENIENT; - @JsonProperty("skip_duplicate_values") - @JsonPropertyDescription("A Boolean option for removing duplicate key-value pairs. When set to `true`, " + - "only one unique key-value pair will be preserved. Default is `false`.") + @JsonProperty(value = SKIP_DUPLICATE_VALUES_KEY, defaultValue = "false") + @JsonPropertyDescription("A Boolean option for removing duplicate key-value pairs. When set to true, " + + "only one unique key-value pair will be preserved. Default is false.") @NotNull - private boolean skipDuplicateValues = DEFAULT_SKIP_DUPLICATE_VALUES; + private boolean skipDuplicateValues = false; - @JsonProperty("remove_brackets") - @JsonPropertyDescription("Specifies whether to treat square brackets, angle brackets, and parentheses " + - "as value “wrappers” that should be removed from the value. Default is `false`.") - @NotNull - private boolean removeBrackets = DEFAULT_REMOVE_BRACKETS; + @JsonProperty(value = REMOVE_BRACKETS_KEY, defaultValue = "false") + @JsonPropertyDescription("Specifies whether to treat certain grouping characters as wrapping text that should be removed from values." + + "When set to true, the following grouping characters will be removed: square brackets, angle brackets, and parentheses. " + + "The default configuration is false which retains those grouping characters.") + private boolean removeBrackets; - @JsonProperty("value_grouping") - @JsonPropertyDescription("Specifies whether to group values using predefined value grouping delimiters: " + - "`{...}`, `[...]`, `<...>`, `(...)`, `\"...\"`, `'...'`, `http://... (space)`, and `https:// (space)`. " + + @JsonProperty(value = VALUE_GROUPING_KEY, defaultValue = "false") + @JsonPropertyDescription("Specifies whether to group values using predefined grouping delimiters. " + "If this flag is enabled, then the content between the delimiters is considered to be one entity and " + - "is not parsed for key-value pairs. Default is `false`. If `value_grouping` is `true`, then " + - "`{\"key1=[a=b,c=d]&key2=value2\"}` parses to `{\"key1\": \"[a=b,c=d]\", \"key2\": \"value2\"}`.") - private boolean valueGrouping = DEFAULT_VALUE_GROUPING; - - @JsonProperty("recursive") + "they are not parsed as key-value pairs. The following characters are used a group delimiters: " + + "{...}, [...], <...>, (...), \"...\", '...', http://... (space), and https:// (space). " + + "Default is false. For example, if value_grouping is true, then " + + "{\"key1=[a=b,c=d]&key2=value2\"} parses to {\"key1\": \"[a=b,c=d]\", \"key2\": \"value2\"}.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = FIELD_DELIMITER_REGEX_KEY, allowedValues = {"null"}) + }) + private boolean valueGrouping = false; + + @JsonProperty(value = "recursive", defaultValue = "false") @JsonPropertyDescription("Specifies whether to recursively obtain additional key-value pairs from values. " + - "The extra key-value pairs will be stored as sub-keys of the root key. Default is `false`. " + + "The extra key-value pairs will be stored as nested objects within the destination object. Default is false. " + "The levels of recursive parsing must be defined by different brackets for each level: " + - "`[]`, `()`, and `<>`, in this order. Any other configurations specified will only be applied " + - "to the outmost keys.\n" + - "When `recursive` is `true`:\n" + - "`remove_brackets` cannot also be `true`;\n" + - "`skip_duplicate_values` will always be `true`;\n" + - "`whitespace` will always be `\"strict\"`.") - @NotNull - private boolean recursive = DEFAULT_RECURSIVE; - - @JsonProperty("tags_on_failure") - @JsonPropertyDescription("When a `kv` operation causes a runtime exception within the processor, " + - "the operation is safely stopped without crashing the processor, and the event is tagged " + - "with the provided tags.") - private List tagsOnFailure; - - @JsonProperty("overwrite_if_destination_exists") + "[], (), and <>, in this order. Any other configurations specified will only be applied " + + "to the outermost keys.\n" + + "When recursive is true:\n" + + "remove_brackets cannot also be true;\n" + + "skip_duplicate_values will always be true;\n" + + "whitespace will always be \"strict\".") + @AlsoRequired(values = { + @AlsoRequired.Required(name = REMOVE_BRACKETS_KEY, allowedValues = {"false"}), + @AlsoRequired.Required(name = SKIP_DUPLICATE_VALUES_KEY, allowedValues = {"true"}), + @AlsoRequired.Required(name = WHITESPACE_KEY, allowedValues = {"strict"}) + }) + private boolean recursive = false; + + @JsonProperty(value = "overwrite_if_destination_exists", defaultValue = "true") @JsonPropertyDescription("Specifies whether to overwrite existing fields if there are key conflicts " + - "when writing parsed fields to the event. Default is `true`.") + "when writing parsed fields to the event. Default is true.") private boolean overwriteIfDestinationExists = true; - @JsonProperty("drop_keys_with_no_value") - @JsonPropertyDescription("Specifies whether keys should be dropped if they have a null value. Default is `false`. " + - "If `drop_keys_with_no_value` is set to `true`, " + - "then `{\"key1=value1&key2\"}` parses to `{\"key1\": \"value1\"}`.") + @JsonProperty(value = "drop_keys_with_no_value", defaultValue = "false") + @JsonPropertyDescription("Specifies whether keys should be dropped if they have a null value. Default is false. " + + "For example, if drop_keys_with_no_value is set to true, " + + "then {\"key1=value1&key2\"} parses to {\"key1\": \"value1\"}.") private boolean dropKeysWithNoValue = false; - @JsonProperty("key_value_when") - @JsonPropertyDescription("Allows you to specify a Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"`, that will be evaluated to determine whether " + - "the processor should be applied to the event.") - private String keyValueWhen; - - @JsonProperty("strict_grouping") + @JsonProperty(value = "strict_grouping", defaultValue = "false") @JsonPropertyDescription("When enabled, groups with unmatched end characters yield errors. " + "The event is ignored after the errors are logged. " + - "Specifies whether strict grouping should be enabled when the `value_grouping` " + - "or `string_literal_character` options are used. Default is `false`.") + "Specifies whether strict grouping should be enabled when the value_grouping " + + "or string_literal_character options are used. Default is false.") private boolean strictGrouping = false; @JsonProperty("string_literal_character") - @JsonPropertyDescription("When this option is used, any text contained within the specified quotation " + - "mark character will be ignored and excluded from key-value parsing. " + - "Can be set to either a single quotation mark (`'`) or a double quotation mark (`\"`). " + - "Default is `null`.") + @JsonPropertyDescription("When this option is used, any text contained within the specified literal " + + "character will be ignored and excluded from key-value parsing. " + + "Can be set to either a single quotation mark (') or a double quotation mark (\"). " + + "Default is null.") @Size(min = 0, max = 1, message = "string_literal_character may only have character") + @AlsoRequired(values = { + @AlsoRequired.Required(name = VALUE_GROUPING_KEY, allowedValues = {"true"}) + }) private String stringLiteralCharacter = null; + @JsonProperty("tags_on_failure") + @JsonPropertyDescription("The tags to add to the event metadata if the key_value processor fails to parse the source string.") + private List tagsOnFailure; + + @JsonProperty("key_value_when") + @JsonPropertyDescription("A conditional expression such as /some_key == \"test\". " + + "If specified, the key_value processor will only run on events when the expression evaluates to true. ") + private String keyValueWhen; + @AssertTrue(message = "Invalid Configuration. value_grouping option and field_delimiter_regex are mutually exclusive") boolean isValidValueGroupingAndFieldDelimiterRegex() { return (!valueGrouping || fieldDelimiterRegex == null); @@ -284,11 +311,11 @@ public String getDeleteValueRegex() { return deleteValueRegex; } - public String getTransformKey() { + public TransformOption getTransformKey() { return transformKey; } - public String getWhitespace() { + public WhitespaceOption getWhitespace() { return whitespace; } diff --git a/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/TransformOption.java b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/TransformOption.java new file mode 100644 index 0000000000..991d087830 --- /dev/null +++ b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/TransformOption.java @@ -0,0 +1,52 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.keyvalue; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.Arrays; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; + +public enum TransformOption { + NONE("none", key -> key), + LOWERCASE("lowercase", String::toLowerCase), + UPPERCASE("uppercase", String::toUpperCase), + CAPITALIZE("capitalize", key -> key.substring(0, 1).toUpperCase() + key.substring(1)); + + private static final Map NAMES_MAP = Arrays.stream(TransformOption.values()) + .collect(Collectors.toMap( + value -> value.transformName, + value -> value + )); + + private final String transformName; + private final Function transformFunction; + + TransformOption(final String transformName, final Function transformFunction) { + this.transformName = transformName; + this.transformFunction = transformFunction; + } + + @JsonValue + public String getTransformName() { + return transformName; + } + + Function getTransformFunction() { + return transformFunction; + } + + @JsonCreator + public static TransformOption fromTransformName(final String transformName) { + if (Objects.equals(transformName, "")) + return NONE; + return NAMES_MAP.get(transformName); + } +} diff --git a/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/WhitespaceOption.java b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/WhitespaceOption.java new file mode 100644 index 0000000000..171a1bf05c --- /dev/null +++ b/data-prepper-plugins/key-value-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/keyvalue/WhitespaceOption.java @@ -0,0 +1,40 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.keyvalue; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +public enum WhitespaceOption { + LENIENT("lenient"), + STRICT("strict"); + + private static final Map NAMES_MAP = Arrays.stream(WhitespaceOption.values()) + .collect(Collectors.toMap( + value -> value.optionName, + value -> value + )); + + private final String optionName; + + WhitespaceOption(final String optionName) { + this.optionName = optionName; + } + + @JsonValue + public String getWhitespaceName() { + return optionName; + } + + @JsonCreator + public static WhitespaceOption fromWhitespaceName(final String optionName) { + return NAMES_MAP.get(optionName); + } +} diff --git a/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorTests.java b/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorTests.java index 505e236ea9..76ada6d76b 100644 --- a/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorTests.java +++ b/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/KeyValueProcessorTests.java @@ -57,8 +57,6 @@ public class KeyValueProcessorTests { @Mock private ExpressionEvaluator expressionEvaluator; - private KeyValueProcessor keyValueProcessor; - static Record buildRecordWithEvent(final Map data) { return new Record<>(JacksonEvent.builder() .withData(data) @@ -93,12 +91,9 @@ void setup() { lenient().when(mockConfig.getDropKeysWithNoValue()).thenReturn(false); final String keyValueWhen = UUID.randomUUID().toString(); - when(mockConfig.getKeyValueWhen()).thenReturn(keyValueWhen); - when(expressionEvaluator.isValidExpressionStatement(keyValueWhen)).thenReturn(true); + lenient().when(mockConfig.getKeyValueWhen()).thenReturn(keyValueWhen); + lenient().when(expressionEvaluator.isValidExpressionStatement(keyValueWhen)).thenReturn(true); lenient().when(expressionEvaluator.evaluateConditional(eq(keyValueWhen), any(Event.class))).thenReturn(true); - - - keyValueProcessor = new KeyValueProcessor(pluginMetrics, mockConfig, expressionEvaluator); } private KeyValueProcessor createObjectUnderTest() { @@ -119,7 +114,7 @@ void invalid_expression_statement_throws_InvalidPluginConfigurationException() { @Test void testSingleKvToObjectKeyValueProcessor() { final Record record = getMessage("key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -152,7 +147,7 @@ void testKeyValueProcessorWithoutMessage() { final Map testData = new HashMap(); testData.put("notMessage", "not a message"); final Record record = buildRecordWithEvent(testData); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); assertThat(editedRecords.size(), equalTo(1)); assertThat(editedRecords.get(0), notNullValue()); LinkedHashMap parsed_message = editedRecords.get(0).getData().get("parsed_message", LinkedHashMap.class); @@ -162,7 +157,7 @@ void testKeyValueProcessorWithoutMessage() { @Test void testMultipleKvToObjectKeyValueProcessor() { final Record record = getMessage("key1=value1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -174,10 +169,8 @@ void testMultipleKvToObjectKeyValueProcessor() { void testDropKeysWithNoValue() { lenient().when(mockConfig.getDropKeysWithNoValue()).thenReturn(true); - keyValueProcessor = createObjectUnderTest(); - final Record record = getMessage("key1=value1&key2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -258,8 +251,7 @@ void testValueGroupingWithOutStringLiterals() { lenient().when(mockConfig.getFieldSplitCharacters()).thenReturn(" ,"); lenient().when(mockConfig.getValueGrouping()).thenReturn(true); final Record record = getMessage(message); - keyValueProcessor = createObjectUnderTest(); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final Event event = editedRecords.get(0).getData(); assertThat(event.containsKey("parsed_message"), is(false)); @@ -277,8 +269,7 @@ void testStringLiteralCharacter(String literalString) { lenient().when(mockConfig.getFieldSplitCharacters()).thenReturn(" &"); lenient().when(mockConfig.getValueGrouping()).thenReturn(true); final Record record = getMessage(message); - keyValueProcessor = createObjectUnderTest(); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final Event event = editedRecords.get(0).getData(); assertThat(event.containsKey("parsed_message"), is(false)); @@ -292,7 +283,7 @@ void testStringLiteralCharacter(String literalString) { void testWriteToRoot() { when(mockConfig.getDestination()).thenReturn(null); final Record record = getMessage("key1=value1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final Event event = editedRecords.get(0).getData(); assertThat(event.containsKey("parsed_message"), is(false)); @@ -308,7 +299,7 @@ void testWriteToRootWithOverwrite() { when(mockConfig.getDestination()).thenReturn(null); final Record record = getMessage("key1=value1&key2=value2"); record.getData().put("key1", "value to be overwritten"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final Event event = editedRecords.get(0).getData(); @@ -322,7 +313,7 @@ void testWriteToRootWithOverwrite() { void testWriteToDestinationWithOverwrite() { final Record record = getMessage("key1=value1&key2=value2"); record.getData().put("parsed_message", "value to be overwritten"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -336,7 +327,7 @@ void testWriteToRootWithOverwriteDisabled() { when(mockConfig.getOverwriteIfDestinationExists()).thenReturn(false); final Record record = getMessage("key1=value1&key2=value2"); record.getData().put("key1", "value will not be overwritten"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final Event event = editedRecords.get(0).getData(); @@ -351,7 +342,7 @@ void testWriteToDestinationWithOverwriteDisabled() { when(mockConfig.getOverwriteIfDestinationExists()).thenReturn(false); final Record record = getMessage("key1=value1&key2=value2"); record.getData().put("parsed_message", "value will not be overwritten"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final Event event = editedRecords.get(0).getData(); assertThat(event.containsKey("parsed_message"), is(true)); @@ -363,10 +354,8 @@ void testSingleRegexFieldDelimiterKvToObjectKeyValueProcessor() { when(mockConfig.getFieldDelimiterRegex()).thenReturn(":_*:"); when(mockConfig.getFieldSplitCharacters()).thenReturn(null); - keyValueProcessor = createObjectUnderTest(); - final Record record = getMessage("key1=value1:_____:key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); LOG.info("parsedMessage={}", parsed_message); @@ -394,10 +383,8 @@ void testSingleRegexKvDelimiterKvToObjectKeyValueProcessor() { when(mockConfig.getKeyValueDelimiterRegex()).thenReturn(":\\+*:"); when(mockConfig.getValueSplitCharacters()).thenReturn(null); - keyValueProcessor = createObjectUnderTest(); - final Record record = getMessage("key1:++:value1&key2:+:value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -440,7 +427,7 @@ void testBadDeleteValueRegexKeyValueProcessor() { @Test void testDuplicateKeyToArrayValueProcessor() { final Record record = getMessage("key1=value1&key1=value2&key1=value3"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final ArrayList expectedValue = new ArrayList<>(); @@ -454,7 +441,7 @@ void testDuplicateKeyToArrayValueProcessor() { @Test void testDuplicateKeyToArrayWithNonMatchValueProcessor() { final Record record = getMessage("key1=value1&key1=value2&key1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final ArrayList expectedValue = new ArrayList(); @@ -468,10 +455,9 @@ void testDuplicateKeyToArrayWithNonMatchValueProcessor() { @Test void testFieldSplitCharactersKeyValueProcessor() { when(mockConfig.getFieldSplitCharacters()).thenReturn("&!"); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key1=value2!key1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final ArrayList expectedValue = new ArrayList(); @@ -486,10 +472,9 @@ void testFieldSplitCharactersKeyValueProcessor() { void testFieldSplitCharactersDoesntSupercedeDelimiterKeyValueProcessor() { when(mockConfig.getFieldDelimiterRegex()).thenReturn(":d+:"); when(mockConfig.getFieldSplitCharacters()).thenReturn(null); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1:d:key1=value2:d:key1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final ArrayList expectedValue = new ArrayList(); @@ -504,10 +489,9 @@ void testFieldSplitCharactersDoesntSupercedeDelimiterKeyValueProcessor() { void testIncludeKeysKeyValueProcessor() { final List includeKeys = List.of("key2", "key3"); when(mockConfig.getIncludeKeys()).thenReturn(includeKeys); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key2=value2&key3=value3"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -519,10 +503,9 @@ void testIncludeKeysKeyValueProcessor() { void testIncludeKeysNoMatchKeyValueProcessor() { final List includeKeys = Collections.singletonList("noMatch"); when(mockConfig.getIncludeKeys()).thenReturn(includeKeys); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(0)); @@ -531,10 +514,9 @@ void testIncludeKeysNoMatchKeyValueProcessor() { @Test void testIncludeKeysAsDefaultKeyValueProcessor() { when(mockConfig.getIncludeKeys()).thenReturn(List.of()); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -546,10 +528,9 @@ void testIncludeKeysAsDefaultKeyValueProcessor() { void testExcludeKeysKeyValueProcessor() { final List excludeKeys = List.of("key2"); when(mockConfig.getExcludeKeys()).thenReturn(excludeKeys); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -559,10 +540,9 @@ void testExcludeKeysKeyValueProcessor() { @Test void testExcludeKeysAsDefaultKeyValueProcessor() { when(mockConfig.getExcludeKeys()).thenReturn(List.of()); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -584,10 +564,9 @@ void testIncludeExcludeKeysOverlapKeyValueProcessor() { void testDefaultKeysNoOverlapsBetweenEventKvProcessor() { final Map defaultMap = Map.of("dKey", "dValue"); when(mockConfig.getDefaultValues()).thenReturn(defaultMap); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -601,10 +580,9 @@ void testDefaultKeysAlreadyInMessageKvProcessor(boolean skipDuplicateValues) { final Map defaultMap = Map.of("dKey", "dValue"); when(mockConfig.getDefaultValues()).thenReturn(defaultMap); when(mockConfig.getSkipDuplicateValues()).thenReturn(skipDuplicateValues); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&dKey=abc"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -620,10 +598,9 @@ void testDefaultIncludeKeysOverlapKvProcessor(boolean skipDuplicateValues) { when(mockConfig.getDefaultValues()).thenReturn(defaultMap); when(mockConfig.getIncludeKeys()).thenReturn(includeKeys); when(mockConfig.getSkipDuplicateValues()).thenReturn(skipDuplicateValues); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -638,10 +615,9 @@ void testDefaultPrioritizeIncludeKeysKvProcessor(boolean skipDuplicateValues) { when(mockConfig.getDefaultValues()).thenReturn(defaultMap); when(mockConfig.getIncludeKeys()).thenReturn(includeKeys); when(mockConfig.getSkipDuplicateValues()).thenReturn(skipDuplicateValues); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key1=value1&key2=abc"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -657,10 +633,9 @@ void testIncludeKeysNotInRecordMessageKvProcessor(boolean skipDuplicateValues) { when(mockConfig.getDefaultValues()).thenReturn(defaultMap); when(mockConfig.getIncludeKeys()).thenReturn(includeKeys); when(mockConfig.getSkipDuplicateValues()).thenReturn(skipDuplicateValues); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("key2=abc"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -682,7 +657,7 @@ void testCustomPrefixKvProcessor() { when(mockConfig.getPrefix()).thenReturn("TEST_"); final Record record = getMessage("key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -692,7 +667,7 @@ void testCustomPrefixKvProcessor() { @Test void testDefaultNonMatchValueKvProcessor() { final Record record = getMessage("key1+value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -704,7 +679,7 @@ void testCustomStringNonMatchValueKvProcessor() { when(mockConfig.getNonMatchValue()).thenReturn("BAD_MATCH"); final Record record = getMessage("key1+value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -716,7 +691,7 @@ void testCustomBoolNonMatchValueKvProcessor() { when(mockConfig.getNonMatchValue()).thenReturn(true); final Record record = getMessage("key1+value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -728,7 +703,7 @@ void testDeleteKeyRegexKvProcessor() { when(mockConfig.getDeleteKeyRegex()).thenReturn("\\s"); final Record record = getMessage("key1 =value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -740,7 +715,7 @@ void testDeleteValueRegexKvProcessor() { when(mockConfig.getDeleteValueRegex()).thenReturn("\\s"); final Record record = getMessage("key1=value1 &key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -754,7 +729,7 @@ void testDeleteValueWithNonStringRegexKvProcessor() { when(mockConfig.getNonMatchValue()).thenReturn(3); final Record record = getMessage("key1&key2=value2"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -768,7 +743,7 @@ void testDeleteValueAndKeyRegexKvProcessor() { when(mockConfig.getDeleteValueRegex()).thenReturn("\\s"); final Record record = getMessage("key1 =value1 & key2 = value2 "); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -778,10 +753,10 @@ void testDeleteValueAndKeyRegexKvProcessor() { @Test void testLowercaseTransformKvProcessor() { - when(mockConfig.getTransformKey()).thenReturn("lowercase"); + when(mockConfig.getTransformKey()).thenReturn(TransformOption.LOWERCASE); final Record record = getMessage("Key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -790,10 +765,10 @@ void testLowercaseTransformKvProcessor() { @Test void testUppercaseTransformKvProcessor() { - when(mockConfig.getTransformKey()).thenReturn("uppercase"); + when(mockConfig.getTransformKey()).thenReturn(TransformOption.UPPERCASE); final Record record = getMessage("key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -802,10 +777,10 @@ void testUppercaseTransformKvProcessor() { @Test void testCapitalizeTransformKvProcessor() { - when(mockConfig.getTransformKey()).thenReturn("capitalize"); + when(mockConfig.getTransformKey()).thenReturn(TransformOption.CAPITALIZE); final Record record = getMessage("key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsedMessage = getLinkedHashMap(editedRecords); assertThat(parsedMessage.size(), equalTo(1)); @@ -814,10 +789,10 @@ void testCapitalizeTransformKvProcessor() { @Test void testStrictWhitespaceKvProcessor() { - when(mockConfig.getWhitespace()).thenReturn("strict"); + when(mockConfig.getWhitespace()).thenReturn(WhitespaceOption.STRICT); final Record record = getMessage("key1 = value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -827,7 +802,7 @@ void testStrictWhitespaceKvProcessor() { @Test void testFalseSkipDuplicateValuesKvProcessor() { final Record record = getMessage("key1=value1&key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final ArrayList expectedValue = new ArrayList(); @@ -843,7 +818,7 @@ void testTrueSkipDuplicateValuesKvProcessor() { when(mockConfig.getSkipDuplicateValues()).thenReturn(true); final Record record = getMessage("key1=value1&key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(1)); @@ -855,7 +830,7 @@ void testTrueThreeInputsDuplicateValuesKvProcessor() { when(mockConfig.getSkipDuplicateValues()).thenReturn(true); final Record record = getMessage("key1=value1&key1=value2&key1=value1"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final ArrayList expectedValue = new ArrayList(); @@ -871,7 +846,7 @@ void testTrueRemoveBracketsKvProcessor() { when(mockConfig.getRemoveBrackets()).thenReturn(true); final Record record = getMessage("key1=(value1)&key2=[value2]&key3="); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(3)); @@ -885,7 +860,7 @@ void testTrueRemoveMultipleBracketsKvProcessor() { when(mockConfig.getRemoveBrackets()).thenReturn(true); final Record record = getMessage("key1=((value1)&key2=[value1][value2]"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(2)); @@ -898,7 +873,7 @@ void testBasicRecursiveKvProcessor() { when(mockConfig.getRecursive()).thenReturn(true); final Record record = getMessage("item1=[item1-subitem1=item1-subitem1-value&item1-subitem2=item1-subitem2-value]&item2=item2-value"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final Map expectedValueMap = new HashMap<>(); @@ -915,7 +890,7 @@ void testMultiRecursiveKvProcessor() { when(mockConfig.getRecursive()).thenReturn(true); final Record record = getMessage("item1=[item1-subitem1=(inner1=abc&inner2=xyz)&item1-subitem2=item1-subitem2-value]&item2=item2-value"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final Map expectedValueMap = new HashMap<>(); @@ -934,10 +909,10 @@ void testMultiRecursiveKvProcessor() { @Test void testTransformKeyRecursiveKvProcessor() { when(mockConfig.getRecursive()).thenReturn(true); - when(mockConfig.getTransformKey()).thenReturn("capitalize"); + when(mockConfig.getTransformKey()).thenReturn(TransformOption.CAPITALIZE); final Record record = getMessage("item1=[item1-subitem1=item1-subitem1-value&item1-subitem2=item1-subitem2-value]&item2=item2-value"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final Map expectedValueMap = new HashMap<>(); @@ -954,10 +929,9 @@ void testIncludeInnerKeyRecursiveKvProcessor() { final List includeKeys = List.of("item1-subitem1"); when(mockConfig.getRecursive()).thenReturn(true); when(mockConfig.getIncludeKeys()).thenReturn(includeKeys); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("item1=[item1-subitem1=item1-subitem1-value&item1-subitem2=item1-subitem2-value]&item2=item2-value"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(0)); @@ -968,10 +942,9 @@ void testExcludeInnerKeyRecursiveKvProcessor() { final List excludeKeys = List.of("item1-subitem1"); when(mockConfig.getRecursive()).thenReturn(true); when(mockConfig.getExcludeKeys()).thenReturn(excludeKeys); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("item1=[item1-subitem1=item1-subitem1-value&item1-subitem2=item1-subitem2-value]&item2=item2-value"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final Map expectedValueMap = new HashMap<>(); @@ -988,10 +961,9 @@ void testDefaultInnerKeyRecursiveKvProcessor() { final Map defaultMap = Map.of("item1-subitem1", "default"); when(mockConfig.getRecursive()).thenReturn(true); when(mockConfig.getDefaultValues()).thenReturn(defaultMap); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("item1=[item1-subitem1=item1-subitem1-value&item1-subitem2=item1-subitem2-value]&item2=item2-value"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); final Map expectedValueMap = new HashMap<>(); @@ -1008,10 +980,9 @@ void testDefaultInnerKeyRecursiveKvProcessor() { void testTagsAddedWhenParsingFails() { when(mockConfig.getRecursive()).thenReturn(true); when(mockConfig.getTagsOnFailure()).thenReturn(List.of("tag1", "tag2")); - keyValueProcessor = createObjectUnderTest(); final Record record = getMessage("item1=[]"); - final List> editedRecords = (List>) keyValueProcessor.doExecute(Collections.singletonList(record)); + final List> editedRecords = (List>) createObjectUnderTest().doExecute(Collections.singletonList(record)); final LinkedHashMap parsed_message = getLinkedHashMap(editedRecords); assertThat(parsed_message.size(), equalTo(0)); @@ -1020,7 +991,7 @@ void testTagsAddedWhenParsingFails() { @Test void testShutdownIsReady() { - assertThat(keyValueProcessor.isReadyForShutdown(), is(true)); + assertThat(createObjectUnderTest().isReadyForShutdown(), is(true)); } private Record getMessage(String message) { diff --git a/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/TransformOptionTest.java b/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/TransformOptionTest.java new file mode 100644 index 0000000000..a39ea8dbc3 --- /dev/null +++ b/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/TransformOptionTest.java @@ -0,0 +1,91 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.keyvalue; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; +import org.junit.jupiter.params.provider.EnumSource; + +import java.util.stream.Stream; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.emptyString; +import static org.junit.jupiter.params.provider.Arguments.arguments; + +class TransformOptionTest { + @ParameterizedTest + @EnumSource(TransformOption.class) + void fromTransformName_returns_expected_value(final TransformOption transformOption) { + assertThat(TransformOption.fromTransformName(transformOption.getTransformName()), equalTo(transformOption)); + } + + @Test + void fromTransformName_returns_none_if_empty_string() { + assertThat(TransformOption.fromTransformName(""), equalTo(TransformOption.NONE)); + } + + @ParameterizedTest + @EnumSource(TransformOption.class) + void getTransformName_returns_non_empty_null_for_all_types(final TransformOption transformOption) { + assertThat(transformOption.getTransformName(), notNullValue()); + } + + @ParameterizedTest + @EnumSource(value = TransformOption.class) + void getTransformName_returns_non_empty_string_for_all_types_except_none(final TransformOption transformOption) { + assertThat(transformOption.getTransformName(), notNullValue()); + assertThat(transformOption.getTransformName(), not(emptyString())); + } + + @ParameterizedTest + @ArgumentsSource(TransformOptionToKnownName.class) + void getTransformName_returns_expected_name(final TransformOption transformOption, final String expectedString) { + assertThat(transformOption.getTransformName(), equalTo(expectedString)); + } + + static class TransformOptionToKnownName implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(TransformOption.NONE, "none"), + arguments(TransformOption.UPPERCASE, "uppercase"), + arguments(TransformOption.LOWERCASE, "lowercase"), + arguments(TransformOption.CAPITALIZE, "capitalize") + ); + } + } + + @ParameterizedTest + @ArgumentsSource(TransformationArguments.class) + void getTransformFunction_performs_expected_transformation(final TransformOption transformOption, final String inputString, final String outputString) { + assertThat(transformOption.getTransformFunction().apply(inputString), equalTo(outputString)); + } + + static class TransformationArguments implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(TransformOption.NONE, "hello", "hello"), + arguments(TransformOption.NONE, "Hello", "Hello"), + arguments(TransformOption.NONE, "hello world", "hello world"), + arguments(TransformOption.UPPERCASE, "hello", "HELLO"), + arguments(TransformOption.UPPERCASE, "Hello", "HELLO"), + arguments(TransformOption.LOWERCASE, "hello", "hello"), + arguments(TransformOption.LOWERCASE, "Hello", "hello"), + arguments(TransformOption.LOWERCASE, "HELLO", "hello"), + arguments(TransformOption.CAPITALIZE, "hello", "Hello"), + arguments(TransformOption.CAPITALIZE, "hello world", "Hello world") + ); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/WhitespaceOptionTest.java b/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/WhitespaceOptionTest.java new file mode 100644 index 0000000000..665826f1ce --- /dev/null +++ b/data-prepper-plugins/key-value-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/keyvalue/WhitespaceOptionTest.java @@ -0,0 +1,53 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.keyvalue; + +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; +import org.junit.jupiter.params.provider.EnumSource; + +import java.util.stream.Stream; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.emptyString; +import static org.junit.jupiter.params.provider.Arguments.arguments; + +class WhitespaceOptionTest { + @ParameterizedTest + @EnumSource(WhitespaceOption.class) + void fromWhitespaceName_returns_expected_value(final WhitespaceOption whitespaceOption) { + assertThat(WhitespaceOption.fromWhitespaceName(whitespaceOption.getWhitespaceName()), equalTo(whitespaceOption)); + } + + @ParameterizedTest + @EnumSource(WhitespaceOption.class) + void getWhitespaceName_returns_non_empty_string_for_all_types(final WhitespaceOption whitespaceOption) { + assertThat(whitespaceOption.getWhitespaceName(), notNullValue()); + assertThat(whitespaceOption.getWhitespaceName(), not(emptyString())); + } + + @ParameterizedTest + @ArgumentsSource(WhitespaceOptionToKnownName.class) + void getWhitespaceName_returns_expected_name(final WhitespaceOption whitespaceOption, final String expectedString) { + assertThat(whitespaceOption.getWhitespaceName(), equalTo(expectedString)); + } + + static class WhitespaceOptionToKnownName implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(WhitespaceOption.LENIENT, "lenient"), + arguments(WhitespaceOption.STRICT, "strict") + ); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/README.md b/data-prepper-plugins/kinesis-source/README.md new file mode 100644 index 0000000000..10d17eebf3 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/README.md @@ -0,0 +1,16 @@ +# Kinesis Source + +This source ingests data into Data Prepper from [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/). + +See the [`kinesis` source documentation](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/sources/kinesis/) for details on usage. + + +## Developer Guide + +The integration tests for this plugin do not run as part of the Data Prepper build. + +The following command runs the integration tests: + +``` +./gradlew data-prepper-plugins:kinesis-source:integrationTest -Dtests.kinesis.source.aws.region= --tests KinesisSourceIT +``` diff --git a/data-prepper-plugins/kinesis-source/build.gradle b/data-prepper-plugins/kinesis-source/build.gradle new file mode 100644 index 0000000000..87fb22f3a0 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/build.gradle @@ -0,0 +1,75 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +plugins { + id 'java' +} + +sourceSets { + integrationTest { + java { + compileClasspath += main.output + test.output + runtimeClasspath += main.output + test.output + srcDir file('src/integrationTest/java') + } + } +} + +test { + useJUnitPlatform() +} + +configurations { + integrationTestImplementation.extendsFrom testImplementation + integrationTestRuntime.extendsFrom testRuntime +} + +dependencies { + implementation project(':data-prepper-api') + implementation project(':data-prepper-plugins:common') + implementation project(path: ':data-prepper-plugins:buffer-common') + implementation project(path: ':data-prepper-plugins:aws-plugin-api') + implementation 'com.fasterxml.jackson.core:jackson-core' + implementation 'io.micrometer:micrometer-core' + implementation 'software.amazon.kinesis:amazon-kinesis-client:2.6.0' + compileOnly 'org.projectlombok:lombok:1.18.20' + annotationProcessor 'org.projectlombok:lombok:1.18.20' + + testImplementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' + testImplementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' + testImplementation project(':data-prepper-test-common') + testImplementation project(':data-prepper-test-event') + testImplementation project(':data-prepper-core') + testImplementation project(':data-prepper-event') + testImplementation project(':data-prepper-plugin-framework') + testImplementation project(':data-prepper-pipeline-parser') + testImplementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' + testImplementation project(':data-prepper-plugins:parse-json-processor') + testImplementation project(':data-prepper-plugins:newline-codecs') +} + +task integrationTest(type: Test) { + group = 'verification' + testClassesDirs = sourceSets.integrationTest.output.classesDirs + useJUnitPlatform() + + classpath = sourceSets.integrationTest.runtimeClasspath + systemProperty 'tests.kinesis.source.aws.region', System.getProperty('tests.kinesis.source.aws.region') + + filter { + includeTestsMatching '*IT' + } +} + +jacocoTestCoverageVerification { + dependsOn jacocoTestReport + violationRules { + rule { //in addition to core projects rule + limit { + minimum = 1.0 + } + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSourceIT.java b/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSourceIT.java new file mode 100644 index 0000000000..028f73ad9f --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSourceIT.java @@ -0,0 +1,270 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import io.micrometer.core.instrument.Counter; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.opensearch.dataprepper.event.TestEventFactory; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonInputCodec; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonInputConfig; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfig; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfigSupplier; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseCoordinationTableConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.AwsAuthenticationConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.ConsumerStrategy; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.ingester.KinesisIngester; +import org.opensearch.dataprepper.plugins.kinesis.source.util.TestIDGenerator; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; +import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; +import software.amazon.awssdk.services.kinesis.KinesisClient; +import software.amazon.kinesis.common.InitialPositionInStream; +import software.amazon.kinesis.common.KinesisClientUtil; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; + +import static org.awaitility.Awaitility.await; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.notNullValue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyCollection; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.ACKNOWLEDGEMENT_SET_FAILURES_METRIC_NAME; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.ACKNOWLEDGEMENT_SET_SUCCESS_METRIC_NAME; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_RECORD_PROCESSED; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_RECORD_PROCESSING_ERRORS; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_CHECKPOINT_FAILURES; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_STREAM_TAG_KEY; + +public class KinesisSourceIT { + private static final String AWS_REGION = "tests.kinesis.source.aws.region"; + private static final String STREAM_NAME_PREFIX = "Stream1"; + private static final String PIPELINE_NAME = "pipeline-id"; + private static final Duration CHECKPOINT_INTERVAL = Duration.ofMillis(0); + private static final String codec_plugin_name = "ndjson"; + private static final String LEASE_TABLE_PREFIX = "kinesis-lease-table"; + private static final int NUMBER_OF_RECORDS_TO_ACCUMULATE = 10; + + @Mock + private AcknowledgementSetManager acknowledgementSetManager; + + @Mock + private KinesisClientFactory kinesisClientFactory; + + @Mock + private Buffer> buffer; + + @Mock + private KinesisSourceConfig kinesisSourceConfig; + + @Mock + private AwsAuthenticationConfig awsAuthenticationConfig; + + @Mock + private KinesisStreamConfig kinesisStreamConfig; + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private PluginFactory pluginFactory; + + @Mock + private PipelineDescription pipelineDescription; + + @Mock + private KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier; + + @Mock + private KinesisLeaseConfig kinesisLeaseConfig; + + @Mock + private WorkerIdentifierGenerator workerIdentifierGenerator; + + @Mock + private KinesisLeaseCoordinationTableConfig kinesisLeaseCoordinationTableConfig; + + @Mock + private InputCodec codec; + + @Mock + private Counter acknowledgementSetSuccesses; + + @Mock + private Counter acknowledgementSetFailures; + + @Mock + private Counter recordsProcessed; + + @Mock + private Counter recordProcessingErrors; + + @Mock + private Counter checkpointFailures; + + private KinesisClient kinesisClient; + + private DynamoDbClient dynamoDbClient; + + private KinesisIngester kinesisIngester; + + @BeforeEach + void setup() { + MockitoAnnotations.openMocks(this); + + when(awsAuthenticationConfig.getAwsRegion()).thenReturn(Region.of(System.getProperty(AWS_REGION))); + when(awsAuthenticationConfig.getAwsStsRoleArn()).thenReturn(UUID.randomUUID().toString()); + when(awsAuthenticationConfig.getAwsStsExternalId()).thenReturn(UUID.randomUUID().toString()); + final Map stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + when(awsAuthenticationConfig.getAwsStsHeaderOverrides()).thenReturn(stsHeaderOverrides); + when(kinesisSourceConfig.getAwsAuthenticationConfig()).thenReturn(awsAuthenticationConfig); + + String testId = TestIDGenerator.generateRandomTestID(); + String streamName = STREAM_NAME_PREFIX + "_" + testId; + String leaseTableName = LEASE_TABLE_PREFIX + "_" + testId; + + when(kinesisStreamConfig.getName()).thenReturn(streamName); + when(kinesisStreamConfig.getCheckPointInterval()).thenReturn(CHECKPOINT_INTERVAL); + when(kinesisStreamConfig.getInitialPosition()).thenReturn(InitialPositionInStream.TRIM_HORIZON); + when(kinesisSourceConfig.getConsumerStrategy()).thenReturn(ConsumerStrategy.ENHANCED_FAN_OUT); + when(kinesisSourceConfig.getStreams()).thenReturn(List.of(kinesisStreamConfig)); + when(kinesisLeaseConfig.getLeaseCoordinationTable()).thenReturn(kinesisLeaseCoordinationTableConfig); + when(kinesisLeaseCoordinationTableConfig.getTableName()).thenReturn(leaseTableName); + when(kinesisLeaseCoordinationTableConfig.getRegion()).thenReturn(System.getProperty(AWS_REGION)); + when(kinesisLeaseCoordinationTableConfig.getAwsRegion()).thenReturn(Region.of(System.getProperty(AWS_REGION))); + when(kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig()).thenReturn(Optional.ofNullable(kinesisLeaseConfig)); + + PluginModel pluginModel = mock(PluginModel.class); + when(pluginModel.getPluginName()).thenReturn(codec_plugin_name); + when(pluginModel.getPluginSettings()).thenReturn(Collections.emptyMap()); + when(kinesisSourceConfig.getCodec()).thenReturn(pluginModel); + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(false); + when(kinesisSourceConfig.getNumberOfRecordsToAccumulate()).thenReturn(NUMBER_OF_RECORDS_TO_ACCUMULATE); + when(kinesisSourceConfig.getBufferTimeout()).thenReturn(Duration.ofMillis(1)); + + kinesisClientFactory = mock(KinesisClientFactory.class); + when(kinesisClientFactory.buildDynamoDBClient(kinesisLeaseCoordinationTableConfig.getAwsRegion())).thenReturn(DynamoDbAsyncClient.builder() + .region(Region.of(System.getProperty(AWS_REGION))) + .build()); + when(kinesisClientFactory.buildKinesisAsyncClient(awsAuthenticationConfig.getAwsRegion())).thenReturn(KinesisClientUtil.createKinesisAsyncClient( + KinesisAsyncClient.builder() + .region(Region.of(System.getProperty(AWS_REGION))) + )); + when(kinesisClientFactory.buildCloudWatchAsyncClient(kinesisLeaseCoordinationTableConfig.getAwsRegion())).thenReturn(CloudWatchAsyncClient.builder() + .region(Region.of(System.getProperty(AWS_REGION))) + .build()); + + when(pipelineDescription.getPipelineName()).thenReturn(PIPELINE_NAME); + + final String workerId = "worker-identifier-" + testId; + when(workerIdentifierGenerator.generate()).thenReturn(workerId); + + when(pluginMetrics.counterWithTags(ACKNOWLEDGEMENT_SET_SUCCESS_METRIC_NAME, KINESIS_STREAM_TAG_KEY, streamName)) + .thenReturn(acknowledgementSetSuccesses); + + when(pluginMetrics.counterWithTags(ACKNOWLEDGEMENT_SET_FAILURES_METRIC_NAME, KINESIS_STREAM_TAG_KEY, streamName)) + .thenReturn(acknowledgementSetFailures); + + when(pluginMetrics.counterWithTags(KINESIS_RECORD_PROCESSED, KINESIS_STREAM_TAG_KEY, streamName)) + .thenReturn(recordsProcessed); + + when(pluginMetrics.counterWithTags(KINESIS_RECORD_PROCESSING_ERRORS, KINESIS_STREAM_TAG_KEY, streamName)) + .thenReturn(recordProcessingErrors); + + when(pluginMetrics.counterWithTags(KINESIS_CHECKPOINT_FAILURES, KINESIS_STREAM_TAG_KEY, streamName)) + .thenReturn(checkpointFailures); + + kinesisClient = KinesisClient.builder().region(Region.of(System.getProperty(AWS_REGION))).build(); + dynamoDbClient = DynamoDbClient.builder().region(Region.of(System.getProperty(AWS_REGION))).build(); + kinesisIngester = new KinesisIngester(kinesisClient, streamName, dynamoDbClient, leaseTableName); + + kinesisIngester.createStream(); + kinesisIngester.createLeaseTable(); + } + + @AfterEach + void cleanup() { + kinesisIngester.deleteLeaseTable(); + kinesisIngester.deleteStream(); + } + + @Test + public void testKinesisService() throws Exception { + when(pluginFactory.loadPlugin(eq(InputCodec.class), any())) + .thenReturn(new NdjsonInputCodec(new NdjsonInputConfig(), TestEventFactory.getTestEventFactory())); + + final List> actualRecordsWritten = new ArrayList<>(); + doAnswer(a -> actualRecordsWritten.addAll(a.getArgument(0, Collection.class))) + .when(buffer).writeAll(anyCollection(), anyInt()); + + // Send data to stream + final List logStream = new ArrayList<>(); + int numberOfRecords = 20; + for (int i = 1; i <= numberOfRecords; i++) { + logStream.add("input record" + i); + } + kinesisIngester.ingest(logStream); + + KinesisService kinesisService = new KinesisService( + kinesisSourceConfig, + kinesisClientFactory, + pluginMetrics, + pluginFactory, + pipelineDescription, + acknowledgementSetManager, + kinesisLeaseConfigSupplier, + workerIdentifierGenerator + ); + + kinesisService.start(buffer); + + await().atMost(Duration.ofSeconds(150)).untilAsserted( + () -> { + verify(buffer, atLeastOnce()).writeAll(anyCollection(), anyInt()); + assertThat(actualRecordsWritten, notNullValue()); + assertThat(actualRecordsWritten.size(), equalTo(numberOfRecords)); + } + ); + + kinesisService.shutDown(); + } +} \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/ingester/KinesisIngester.java b/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/ingester/KinesisIngester.java new file mode 100644 index 0000000000..01e077a7de --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/ingester/KinesisIngester.java @@ -0,0 +1,227 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.ingester; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; +import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; +import software.amazon.awssdk.services.dynamodb.model.BillingMode; +import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest; +import software.amazon.awssdk.services.dynamodb.model.CreateTableResponse; +import software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest; +import software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest; +import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse; +import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; +import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement; +import software.amazon.awssdk.services.dynamodb.model.KeyType; +import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; +import software.amazon.awssdk.services.dynamodb.model.TableStatus; +import software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter; +import software.amazon.awssdk.services.kinesis.KinesisClient; +import software.amazon.awssdk.services.kinesis.model.CreateStreamRequest; +import software.amazon.awssdk.services.kinesis.model.DeleteStreamRequest; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamRequest; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamResponse; +import software.amazon.awssdk.services.kinesis.model.KinesisException; +import software.amazon.awssdk.services.kinesis.model.PutRecordRequest; +import software.amazon.awssdk.services.kinesis.model.StreamStatus; +import software.amazon.awssdk.services.kinesis.waiters.KinesisWaiter; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +import static org.awaitility.Awaitility.await; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +public class KinesisIngester { + private static final int SHARDS = 4; + private static final String LEASE_TABLE_PARTITION_KEY = "leaseKey"; + private static final String PARTITION_KEY = "record_key"; + private static final String ATTRIBUTE_VALUE = "record"; + + private final KinesisClient kinesisClient; + private final DynamoDbClient ddbClient; + private final String streamName; + private final String tableName; + + private final ObjectMapper objectMapper; + + public KinesisIngester(final KinesisClient kinesisClient, final String streamName, final DynamoDbClient ddbClient, final String tableName) { + this.kinesisClient = kinesisClient; + this.ddbClient = ddbClient; + this.tableName = tableName; + this.streamName = streamName; + this.objectMapper = new ObjectMapper(); + } + + public void createStream() { + CreateStreamRequest createStreamRequest = CreateStreamRequest.builder() + .streamName(streamName) + .shardCount(SHARDS) + .build(); + try { + kinesisClient.createStream(createStreamRequest); + KinesisWaiter kinesisWaiter = kinesisClient.waiter(); + + DescribeStreamRequest describeStreamRequest = DescribeStreamRequest.builder() + .streamName(streamName) + .build(); + + kinesisWaiter.waitUntilStreamExists(describeStreamRequest); + waitForStreamToBeActive(); + } catch (KinesisException ex) { + throw new RuntimeException(ex); + } + } + + public void createLeaseTable() { + final CreateTableRequest createTableRequest = CreateTableRequest.builder() + .tableName(tableName) + .keySchema(getKeySchema()) + .attributeDefinitions(getAttributeDefinitions()) + .billingMode(BillingMode.PAY_PER_REQUEST) + .build(); + + try { + CreateTableResponse response = ddbClient.createTable(createTableRequest); + DescribeTableRequest tableRequest = DescribeTableRequest.builder() + .tableName(tableName) + .build(); + // Wait until the Amazon DynamoDB table is created. + DynamoDbWaiter dbWaiter = ddbClient.waiter(); + dbWaiter.waitUntilTableExists(tableRequest); + waitForTableActive(); + + } catch (final DynamoDbException e) { + throw new RuntimeException(e); + } + } + + public void deleteLeaseTable() { + + DeleteTableRequest request = DeleteTableRequest.builder() + .tableName(tableName) + .build(); + try { + ddbClient.deleteTable(request); + } catch (final DynamoDbException e) { + throw new RuntimeException(e); + } + } + + public void deleteStream() { + DeleteStreamRequest deleteStreamRequest = DeleteStreamRequest.builder() + .streamName(streamName) + .enforceConsumerDeletion(true) + .build(); + try { + kinesisClient.deleteStream(deleteStreamRequest); + } catch (KinesisException ex) { + throw new RuntimeException(ex); + } + } + + private void waitForTableActive() { + final DescribeTableRequest describeTableRequest = DescribeTableRequest.builder() + .tableName(tableName) + .build(); + + await().atMost(5, TimeUnit.MINUTES).pollInterval(10, TimeUnit.SECONDS).untilAsserted( + () -> { + final DescribeTableResponse describeTableResponse = ddbClient.describeTable(describeTableRequest); + final TableStatus tableStatus = describeTableResponse.table().tableStatus(); + + if (!TableStatus.CREATING.equals(tableStatus) && !TableStatus.ACTIVE.equals(tableStatus)) { + throw new RuntimeException("Table is not creating or active."); + } + + assertThat(tableStatus, equalTo(TableStatus.ACTIVE)); + } + ); + } + + private Collection getKeySchema() { + List keySchema = new ArrayList<>(); + keySchema.add(KeySchemaElement.builder() + .attributeName(LEASE_TABLE_PARTITION_KEY) + .keyType(KeyType.HASH) + .build()); + + return keySchema; + } + + private Collection getAttributeDefinitions() { + List definitions = new ArrayList<>(); + definitions.add(AttributeDefinition.builder() + .attributeName(LEASE_TABLE_PARTITION_KEY) + .attributeType(ScalarAttributeType.S) + .build()); + + return definitions; + } + + private void waitForStreamToBeActive() { + final DescribeStreamRequest describeStreamRequest = DescribeStreamRequest.builder() + .streamName(streamName) + .build(); + + await().atMost(5, TimeUnit.MINUTES).pollInterval(10, TimeUnit.SECONDS).untilAsserted( + () -> { + final DescribeStreamResponse describeStreamResponse = + kinesisClient.describeStream(describeStreamRequest); + final StreamStatus streamStatus = describeStreamResponse + .streamDescription().streamStatus(); + + if (!StreamStatus.CREATING.equals(streamStatus) && !StreamStatus.ACTIVE.equals(streamStatus)) { + throw new RuntimeException("Stream is not creating or active."); + } + + assertThat(streamStatus, equalTo(StreamStatus.ACTIVE)); + } + ); + } + + public void ingest(List logs) { + try { + for (String log : logs) { + putRecord(UUID.randomUUID().toString(), log); + } + } catch (final Exception ex) { + throw new RuntimeException(ex); + } + } + + private void putRecord(final String key, final String value) throws JsonProcessingException { + Map item = new HashMap<>(); + item.put(PARTITION_KEY, key); + item.put(ATTRIBUTE_VALUE, value); + PutRecordRequest putRecordRequest = PutRecordRequest.builder() + .streamName(streamName) + .partitionKey(key) + .data(SdkBytes.fromByteArray(objectMapper.writeValueAsBytes(item))) + .build(); + + try { + kinesisClient.putRecord(putRecordRequest); + } catch (final Exception ex) { + //log.error("Put Record failed, item key: {}, value: {}", key, value); + throw new RuntimeException(ex); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/util/TestIDGenerator.java b/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/util/TestIDGenerator.java new file mode 100644 index 0000000000..0af62650a8 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/kinesis/source/util/TestIDGenerator.java @@ -0,0 +1,21 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.util; + +import org.apache.commons.lang3.RandomStringUtils; + +import java.util.Locale; + +public class TestIDGenerator { + public static String generateRandomTestID() { + return RandomStringUtils.random(8, true, false).toLowerCase(Locale.ROOT); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfig.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfig.java new file mode 100644 index 0000000000..68981c5cba --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfig.java @@ -0,0 +1,20 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; + +@Getter +public class KinesisLeaseConfig { + @JsonProperty("lease_coordination") + private KinesisLeaseCoordinationTableConfig leaseCoordinationTable; +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigExtension.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigExtension.java new file mode 100644 index 0000000000..2cca52e565 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigExtension.java @@ -0,0 +1,31 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import org.opensearch.dataprepper.model.annotations.DataPrepperExtensionPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.plugin.ExtensionPlugin; +import org.opensearch.dataprepper.model.plugin.ExtensionPoints; + +@DataPrepperExtensionPlugin(modelType = KinesisLeaseConfig.class, rootKeyJsonPath = "/kinesis", allowInPipelineConfigurations = true) +public class KinesisLeaseConfigExtension implements ExtensionPlugin { + + private KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier; + @DataPrepperPluginConstructor + public KinesisLeaseConfigExtension(final KinesisLeaseConfig kinesisLeaseConfig) { + this.kinesisLeaseConfigSupplier = new KinesisLeaseConfigSupplier(kinesisLeaseConfig); + } + + @Override + public void apply(final ExtensionPoints extensionPoints) { + extensionPoints.addExtensionProvider(new KinesisLeaseConfigProvider(this.kinesisLeaseConfigSupplier)); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigProvider.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigProvider.java new file mode 100644 index 0000000000..9140ca9e92 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigProvider.java @@ -0,0 +1,33 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import org.opensearch.dataprepper.model.plugin.ExtensionProvider; + +import java.util.Optional; + +class KinesisLeaseConfigProvider implements ExtensionProvider { + private final KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier; + + public KinesisLeaseConfigProvider(final KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier) { + this.kinesisLeaseConfigSupplier = kinesisLeaseConfigSupplier; + } + + @Override + public Optional provideInstance(Context context) { + return Optional.of(this.kinesisLeaseConfigSupplier); + } + + @Override + public Class supportedClass() { + return KinesisLeaseConfigSupplier.class; + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigSupplier.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigSupplier.java new file mode 100644 index 0000000000..6c00e40405 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigSupplier.java @@ -0,0 +1,26 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import java.util.Optional; + +public class KinesisLeaseConfigSupplier { + + private KinesisLeaseConfig kinesisLeaseConfig; + + public KinesisLeaseConfigSupplier(final KinesisLeaseConfig kinesisLeaseConfig) { + this.kinesisLeaseConfig = kinesisLeaseConfig; + } + + public Optional getKinesisExtensionLeaseConfig() { + return Optional.ofNullable(kinesisLeaseConfig); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseCoordinationTableConfig.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseCoordinationTableConfig.java new file mode 100644 index 0000000000..d497f01369 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseCoordinationTableConfig.java @@ -0,0 +1,32 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NonNull; +import software.amazon.awssdk.regions.Region; + +@Getter +public class KinesisLeaseCoordinationTableConfig { + + @JsonProperty("table_name") + @NonNull + private String tableName; + + @JsonProperty("region") + @NonNull + private String region; + + public Region getAwsRegion() { + return Region.of(region); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/HostNameWorkerIdentifierGenerator.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/HostNameWorkerIdentifierGenerator.java new file mode 100644 index 0000000000..61383304d0 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/HostNameWorkerIdentifierGenerator.java @@ -0,0 +1,39 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * Generate a unique ID to represent a consumer application instance. + */ +public class HostNameWorkerIdentifierGenerator implements WorkerIdentifierGenerator { + + private static final String hostName; + + static { + try { + hostName = InetAddress.getLocalHost().getHostName(); + } catch (final UnknownHostException e) { + throw new RuntimeException(e); + } + } + + + /** + * @return Default to use host name. + */ + @Override + public String generate() { + return hostName; + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisClientFactory.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisClientFactory.java new file mode 100644 index 0000000000..9398f208e1 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisClientFactory.java @@ -0,0 +1,62 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.AwsAuthenticationConfig; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; +import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; +import software.amazon.kinesis.common.KinesisClientUtil; + +public class KinesisClientFactory { + private final AwsCredentialsProvider awsCredentialsProvider; + private final AwsCredentialsProvider defaultCredentialsProvider; + private final AwsAuthenticationConfig awsAuthenticationConfig; + + public KinesisClientFactory(final AwsCredentialsSupplier awsCredentialsSupplier, + final AwsAuthenticationConfig awsAuthenticationConfig) { + awsCredentialsProvider = awsCredentialsSupplier.getProvider(AwsCredentialsOptions.builder() + .withRegion(awsAuthenticationConfig.getAwsRegion()) + .withStsRoleArn(awsAuthenticationConfig.getAwsStsRoleArn()) + .withStsExternalId(awsAuthenticationConfig.getAwsStsExternalId()) + .withStsHeaderOverrides(awsAuthenticationConfig.getAwsStsHeaderOverrides()) + .build()); + defaultCredentialsProvider = awsCredentialsSupplier.getProvider( + AwsCredentialsOptions.defaultOptionsWithDefaultCredentialsProvider()); + this.awsAuthenticationConfig = awsAuthenticationConfig; + } + + public DynamoDbAsyncClient buildDynamoDBClient(Region region) { + return DynamoDbAsyncClient.builder() + .credentialsProvider(defaultCredentialsProvider) + .region(region) + .build(); + } + + public KinesisAsyncClient buildKinesisAsyncClient(Region region) { + return KinesisClientUtil.createKinesisAsyncClient( + KinesisAsyncClient.builder() + .credentialsProvider(awsCredentialsProvider) + .region(region) + ); + } + + public CloudWatchAsyncClient buildCloudWatchAsyncClient(Region region) { + return CloudWatchAsyncClient.builder() + .credentialsProvider(defaultCredentialsProvider) + .region(region) + .build(); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisMultiStreamTracker.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisMultiStreamTracker.java new file mode 100644 index 0000000000..638751f17e --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisMultiStreamTracker.java @@ -0,0 +1,88 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import com.amazonaws.arn.Arn; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamRequest; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamResponse; +import software.amazon.awssdk.services.kinesis.model.StreamDescription; +import software.amazon.kinesis.common.InitialPositionInStreamExtended; +import software.amazon.kinesis.common.StreamConfig; +import software.amazon.kinesis.common.StreamIdentifier; +import software.amazon.kinesis.processor.FormerStreamsLeasesDeletionStrategy; +import software.amazon.kinesis.processor.MultiStreamTracker; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + + +public class KinesisMultiStreamTracker implements MultiStreamTracker { + private static final String COLON = ":"; + + private final KinesisAsyncClient kinesisClient; + private final KinesisSourceConfig sourceConfig; + private final String applicationName; + + public KinesisMultiStreamTracker(KinesisAsyncClient kinesisClient, final KinesisSourceConfig sourceConfig, final String applicationName) { + this.kinesisClient = kinesisClient; + this.sourceConfig = sourceConfig; + this.applicationName = applicationName; + } + + @Override + public List streamConfigList() { + List streamConfigList = new ArrayList<>(); + for (KinesisStreamConfig kinesisStreamConfig : sourceConfig.getStreams()) { + StreamConfig streamConfig = getStreamConfig(kinesisStreamConfig); + streamConfigList.add(streamConfig); + } + return streamConfigList; + } + + private StreamConfig getStreamConfig(KinesisStreamConfig kinesisStreamConfig) { + StreamIdentifier sourceStreamIdentifier = getStreamIdentifier(kinesisStreamConfig); + return new StreamConfig(sourceStreamIdentifier, + InitialPositionInStreamExtended.newInitialPosition(kinesisStreamConfig.getInitialPosition())); + } + + private StreamIdentifier getStreamIdentifier(KinesisStreamConfig kinesisStreamConfig) { + DescribeStreamRequest describeStreamRequest = DescribeStreamRequest.builder() + .streamName(kinesisStreamConfig.getName()) + .build(); + DescribeStreamResponse describeStreamResponse = kinesisClient.describeStream(describeStreamRequest).join(); + String streamIdentifierString = getStreamIdentifierString(describeStreamResponse.streamDescription()); + return StreamIdentifier.multiStreamInstance(streamIdentifierString); + } + + private String getStreamIdentifierString(StreamDescription streamDescription) { + String accountId = Arn.fromString(streamDescription.streamARN()).getAccountId(); + long creationEpochSecond = streamDescription.streamCreationTimestamp().getEpochSecond(); + return String.join(COLON, accountId, streamDescription.streamName(), String.valueOf(creationEpochSecond)); + } + + /** + * Setting the deletion policy as autodetect and release shard lease with a wait time of 10 sec + */ + @Override + public FormerStreamsLeasesDeletionStrategy formerStreamsLeasesDeletionStrategy() { + return new FormerStreamsLeasesDeletionStrategy.AutoDetectionAndDeferredDeletionStrategy() { + @Override + public Duration waitPeriodToDeleteFormerStreams() { + return Duration.ofSeconds(10); + } + }; + + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisService.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisService.java new file mode 100644 index 0000000000..7f712d9e73 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisService.java @@ -0,0 +1,191 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import lombok.Setter; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfig; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfigSupplier; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.ConsumerStrategy; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisShardRecordProcessorFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; +import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; +import software.amazon.awssdk.services.dynamodb.model.BillingMode; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; +import software.amazon.kinesis.common.ConfigsBuilder; +import software.amazon.kinesis.coordinator.Scheduler; +import software.amazon.kinesis.processor.ShardRecordProcessorFactory; +import software.amazon.kinesis.retrieval.polling.PollingConfig; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; + +public class KinesisService { + private static final Logger LOG = LoggerFactory.getLogger(KinesisService.class); + private static final int GRACEFUL_SHUTDOWN_WAIT_INTERVAL_SECONDS = 20; + + private final PluginMetrics pluginMetrics; + private final PluginFactory pluginFactory; + + private final String applicationName; + private final String tableName; + private final String kclMetricsNamespaceName; + private final String pipelineName; + private final AcknowledgementSetManager acknowledgementSetManager; + private final KinesisSourceConfig kinesisSourceConfig; + private final KinesisAsyncClient kinesisClient; + private final DynamoDbAsyncClient dynamoDbClient; + private final CloudWatchAsyncClient cloudWatchClient; + private final WorkerIdentifierGenerator workerIdentifierGenerator; + private final InputCodec codec; + + @Setter + private Scheduler scheduler; + private final ExecutorService executorService; + + public KinesisService(final KinesisSourceConfig kinesisSourceConfig, + final KinesisClientFactory kinesisClientFactory, + final PluginMetrics pluginMetrics, + final PluginFactory pluginFactory, + final PipelineDescription pipelineDescription, + final AcknowledgementSetManager acknowledgementSetManager, + final KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier, + final WorkerIdentifierGenerator workerIdentifierGenerator + ){ + this.kinesisSourceConfig = kinesisSourceConfig; + this.pluginMetrics = pluginMetrics; + this.pluginFactory = pluginFactory; + this.acknowledgementSetManager = acknowledgementSetManager; + if (kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig().isEmpty()) { + throw new IllegalStateException("Lease Coordination table should be provided!"); + } + KinesisLeaseConfig kinesisLeaseConfig = + kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig().get(); + this.tableName = kinesisLeaseConfig.getLeaseCoordinationTable().getTableName(); + this.kclMetricsNamespaceName = this.tableName; + this.dynamoDbClient = kinesisClientFactory.buildDynamoDBClient(kinesisLeaseConfig.getLeaseCoordinationTable().getAwsRegion()); + this.kinesisClient = kinesisClientFactory.buildKinesisAsyncClient(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsRegion()); + this.cloudWatchClient = kinesisClientFactory.buildCloudWatchAsyncClient(kinesisLeaseConfig.getLeaseCoordinationTable().getAwsRegion()); + this.pipelineName = pipelineDescription.getPipelineName(); + this.applicationName = pipelineName; + this.workerIdentifierGenerator = workerIdentifierGenerator; + this.executorService = Executors.newFixedThreadPool(1); + final PluginModel codecConfiguration = kinesisSourceConfig.getCodec(); + final PluginSetting codecPluginSettings = new PluginSetting(codecConfiguration.getPluginName(), codecConfiguration.getPluginSettings()); + this.codec = pluginFactory.loadPlugin(InputCodec.class, codecPluginSettings); + } + + public void start(final Buffer> buffer) { + if (buffer == null) { + throw new IllegalStateException("Buffer provided is null."); + } + + if (kinesisSourceConfig.getStreams() == null || kinesisSourceConfig.getStreams().isEmpty()) { + throw new InvalidPluginConfigurationException("No Kinesis streams provided."); + } + + scheduler = getScheduler(buffer); + executorService.execute(scheduler); + } + + public void shutDown() { + LOG.info("Stop request received for Kinesis Source"); + + if (scheduler != null) { + Future gracefulShutdownFuture = scheduler.startGracefulShutdown(); + LOG.info("Waiting up to {} seconds for shutdown to complete.", GRACEFUL_SHUTDOWN_WAIT_INTERVAL_SECONDS); + try { + gracefulShutdownFuture.get(GRACEFUL_SHUTDOWN_WAIT_INTERVAL_SECONDS, TimeUnit.SECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException ex) { + LOG.error("Exception while executing kinesis consumer graceful shutdown, doing force shutdown", ex); + scheduler.shutdown(); + } + LOG.info("Completed, shutting down now."); + } else { + LOG.info("The Kinesis Scheduler was not initialized."); + } + } + + public Scheduler getScheduler(final Buffer> buffer) { + + int numRetries = 0; + while (scheduler == null && numRetries++ < kinesisSourceConfig.getMaxInitializationAttempts()) { + try { + scheduler = createScheduler(buffer); + } catch (Exception ex) { + LOG.error(NOISY, "Caught exception when initializing KCL Scheduler. Will retry", ex); + } + + if (scheduler == null) { + try { + Thread.sleep(kinesisSourceConfig.getInitializationBackoffTime().toMillis()); + } catch (InterruptedException e){ + LOG.debug("Interrupted exception!"); + } + } + } + return scheduler; + } + + public Scheduler createScheduler(final Buffer> buffer) { + final ShardRecordProcessorFactory processorFactory = new KinesisShardRecordProcessorFactory( + buffer, kinesisSourceConfig, acknowledgementSetManager, pluginMetrics, codec); + + ConfigsBuilder configsBuilder = + new ConfigsBuilder( + new KinesisMultiStreamTracker(kinesisClient, kinesisSourceConfig, applicationName), + applicationName, kinesisClient, dynamoDbClient, cloudWatchClient, + workerIdentifierGenerator.generate(), processorFactory + ) + .tableName(tableName) + .namespace(kclMetricsNamespaceName); + + ConsumerStrategy consumerStrategy = kinesisSourceConfig.getConsumerStrategy(); + if (consumerStrategy == ConsumerStrategy.POLLING) { + configsBuilder.retrievalConfig().retrievalSpecificConfig( + new PollingConfig(kinesisClient) + .maxRecords(kinesisSourceConfig.getPollingConfig().getMaxPollingRecords()) + .idleTimeBetweenReadsInMillis( + kinesisSourceConfig.getPollingConfig().getIdleTimeBetweenReads().toMillis())); + } + + return new Scheduler( + configsBuilder.checkpointConfig(), + configsBuilder.coordinatorConfig() + .schedulerInitializationBackoffTimeMillis(kinesisSourceConfig.getInitializationBackoffTime().toMillis()) + .maxInitializationAttempts(kinesisSourceConfig.getMaxInitializationAttempts()), + configsBuilder.leaseManagementConfig().billingMode(BillingMode.PAY_PER_REQUEST), + configsBuilder.lifecycleConfig(), + configsBuilder.metricsConfig(), + configsBuilder.processorConfig(), + configsBuilder.retrievalConfig() + ); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSource.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSource.java new file mode 100644 index 0000000000..220d19cac8 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSource.java @@ -0,0 +1,71 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import lombok.Setter; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.source.Source; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfigSupplier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@DataPrepperPlugin(name = "kinesis", pluginType = Source.class, pluginConfigurationType = KinesisSourceConfig.class) +public class KinesisSource implements Source> { + private static final Logger LOG = LoggerFactory.getLogger(KinesisSource.class); + private final KinesisSourceConfig kinesisSourceConfig; + private final KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier; + + @Setter + private KinesisService kinesisService; + + @DataPrepperPluginConstructor + public KinesisSource(final KinesisSourceConfig kinesisSourceConfig, + final PluginMetrics pluginMetrics, + final PluginFactory pluginFactory, + final PipelineDescription pipelineDescription, + final AwsCredentialsSupplier awsCredentialsSupplier, + final AcknowledgementSetManager acknowledgementSetManager, + final KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier) { + this.kinesisSourceConfig = kinesisSourceConfig; + this.kinesisLeaseConfigSupplier = kinesisLeaseConfigSupplier; + KinesisClientFactory kinesisClientFactory = new KinesisClientFactory(awsCredentialsSupplier, kinesisSourceConfig.getAwsAuthenticationConfig()); + this.kinesisService = new KinesisService(kinesisSourceConfig, kinesisClientFactory, pluginMetrics, pluginFactory, + pipelineDescription, acknowledgementSetManager, kinesisLeaseConfigSupplier, new HostNameWorkerIdentifierGenerator()); + } + @Override + public void start(final Buffer> buffer) { + if (buffer == null) { + throw new IllegalStateException("Buffer provided is null"); + } + + kinesisService.start(buffer); + } + + @Override + public void stop() { + kinesisService.shutDown(); + } + + @Override + public boolean areAcknowledgementsEnabled() { + return kinesisSourceConfig.isAcknowledgments(); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/WorkerIdentifierGenerator.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/WorkerIdentifierGenerator.java new file mode 100644 index 0000000000..75bad8761a --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/WorkerIdentifierGenerator.java @@ -0,0 +1,16 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +public interface WorkerIdentifierGenerator { + + String generate(); +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/AwsAuthenticationConfig.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/AwsAuthenticationConfig.java new file mode 100644 index 0000000000..6a98f70c3b --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/AwsAuthenticationConfig.java @@ -0,0 +1,51 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.Size; +import lombok.Getter; +import software.amazon.awssdk.regions.Region; + +import java.util.Map; + +public class AwsAuthenticationConfig { + private static final String AWS_IAM_ROLE = "role"; + private static final String AWS_IAM = "iam"; + + @JsonProperty("region") + @Size(min = 1, message = "Region cannot be empty string") + private String awsRegion; + + @Getter + @JsonProperty("sts_role_arn") + @Size(min = 20, max = 2048, message = "awsStsRoleArn length should be between 1 and 2048 characters") + private String awsStsRoleArn; + + @Getter + @JsonProperty("sts_external_id") + @Size(min = 2, max = 1224, message = "awsStsExternalId length should be between 2 and 1224 characters") + private String awsStsExternalId; + + @Getter + @JsonProperty("sts_header_overrides") + @Size(max = 5, message = "sts_header_overrides supports a maximum of 5 headers to override") + private Map awsStsHeaderOverrides; + + public Region getAwsRegion() { + return awsRegion != null ? Region.of(awsRegion) : null; + } +} \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/ConsumerStrategy.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/ConsumerStrategy.java new file mode 100644 index 0000000000..05fc88f62a --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/ConsumerStrategy.java @@ -0,0 +1,35 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * @see Enhanced Consumers + */ + +public enum ConsumerStrategy { + + POLLING("polling"), + + ENHANCED_FAN_OUT("fan-out"); + + private final String value; + + ConsumerStrategy(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/InitialPositionInStreamConfig.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/InitialPositionInStreamConfig.java new file mode 100644 index 0000000000..37019cc9af --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/InitialPositionInStreamConfig.java @@ -0,0 +1,47 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import lombok.Getter; +import software.amazon.kinesis.common.InitialPositionInStream; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +@Getter +public enum InitialPositionInStreamConfig { + LATEST("latest", InitialPositionInStream.LATEST), + EARLIEST("earliest", InitialPositionInStream.TRIM_HORIZON); + + private final String position; + + private final InitialPositionInStream positionInStream; + + InitialPositionInStreamConfig(final String position, final InitialPositionInStream positionInStream) { + this.position = position; + this.positionInStream = positionInStream; + } + + private static final Map POSITIONS_MAP = Arrays.stream(InitialPositionInStreamConfig.values()) + .collect(Collectors.toMap( + value -> value.position, + value -> value + )); + + public static InitialPositionInStreamConfig fromPositionValue(final String position) { + return POSITIONS_MAP.get(position.toLowerCase()); + } + + public String toString() { + return this.position; + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisSourceConfig.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisSourceConfig.java new file mode 100644 index 0000000000..64461fffc4 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisSourceConfig.java @@ -0,0 +1,85 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Getter; +import org.opensearch.dataprepper.model.configuration.PluginModel; + +import java.time.Duration; +import java.util.List; + +public class KinesisSourceConfig { + static final Duration DEFAULT_TIME_OUT_IN_MILLIS = Duration.ofMillis(1000); + static final int DEFAULT_NUMBER_OF_RECORDS_TO_ACCUMULATE = 100; + static final Duration DEFAULT_SHARD_ACKNOWLEDGEMENT_TIMEOUT = Duration.ofMinutes(10); + static final Duration DEFAULT_INITIALIZATION_BACKOFF_TIME = Duration.ofMillis(1000); + static final int DEFAULT_MAX_INITIALIZATION_ATTEMPTS = Integer.MAX_VALUE; + + @Getter + @JsonProperty("streams") + @NotNull + @Valid + @Size(min = 1, max = 4, message = "Provide 1-4 streams to read from.") + private List streams; + + @Getter + @JsonProperty("aws") + @NotNull + @Valid + private AwsAuthenticationConfig awsAuthenticationConfig; + + @Getter + @JsonProperty("buffer_timeout") + private Duration bufferTimeout = DEFAULT_TIME_OUT_IN_MILLIS; + + @Getter + @JsonProperty("records_to_accumulate") + private int numberOfRecordsToAccumulate = DEFAULT_NUMBER_OF_RECORDS_TO_ACCUMULATE; + + @JsonProperty("acknowledgments") + @Getter + private boolean acknowledgments = false; + + @Getter + @JsonProperty("consumer_strategy") + private ConsumerStrategy consumerStrategy = ConsumerStrategy.ENHANCED_FAN_OUT; + + @Getter + @JsonProperty("polling") + private KinesisStreamPollingConfig pollingConfig; + + @Getter + @NotNull + @JsonProperty("codec") + private PluginModel codec; + + @JsonProperty("shard_acknowledgment_timeout") + private Duration shardAcknowledgmentTimeout = DEFAULT_SHARD_ACKNOWLEDGEMENT_TIMEOUT; + + public Duration getShardAcknowledgmentTimeout() { + return shardAcknowledgmentTimeout; + } + + @Getter + @JsonProperty("max_initialization_attempts") + private int maxInitializationAttempts = DEFAULT_MAX_INITIALIZATION_ATTEMPTS; + + @Getter + @JsonProperty("initialization_backoff_time") + private Duration initializationBackoffTime = DEFAULT_INITIALIZATION_BACKOFF_TIME; +} + + + diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamConfig.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamConfig.java new file mode 100644 index 0000000000..cb62572f68 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamConfig.java @@ -0,0 +1,47 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import org.opensearch.dataprepper.plugins.codec.CompressionOption; +import software.amazon.kinesis.common.InitialPositionInStream; + +import java.time.Duration; + +@Getter +public class KinesisStreamConfig { + // Checkpointing interval + private static final Duration MINIMAL_CHECKPOINT_INTERVAL = Duration.ofMillis(2 * 60 * 1000); // 2 minute + private static final boolean DEFAULT_ENABLE_CHECKPOINT = false; + + @JsonProperty("stream_name") + @NotNull + @Valid + private String name; + + @JsonProperty("initial_position") + private InitialPositionInStreamConfig initialPosition = InitialPositionInStreamConfig.LATEST; + + @JsonProperty("checkpoint_interval") + private Duration checkPointInterval = MINIMAL_CHECKPOINT_INTERVAL; + + public InitialPositionInStream getInitialPosition() { + return initialPosition.getPositionInStream(); + } + + @Getter + @JsonProperty("compression") + private CompressionOption compression = CompressionOption.NONE; + +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamPollingConfig.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamPollingConfig.java new file mode 100644 index 0000000000..cd7b7a59f6 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamPollingConfig.java @@ -0,0 +1,29 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; + +import java.time.Duration; + +public class KinesisStreamPollingConfig { + private static final int DEFAULT_MAX_RECORDS = 10000; + private static final Duration IDLE_TIME_BETWEEN_READS = Duration.ofMillis(250); + @Getter + @JsonProperty("max_polling_records") + private int maxPollingRecords = DEFAULT_MAX_RECORDS; + + @Getter + @JsonProperty("idle_time_between_reads") + private Duration idleTimeBetweenReads = IDLE_TIME_BETWEEN_READS; + +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/KinesisRecordConverter.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/KinesisRecordConverter.java new file mode 100644 index 0000000000..7e1af1a41d --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/KinesisRecordConverter.java @@ -0,0 +1,67 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.converter; + +import org.opensearch.dataprepper.model.codec.DecompressionEngine; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventMetadata; +import org.opensearch.dataprepper.model.record.Record; +import software.amazon.kinesis.retrieval.KinesisClientRecord; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +public class KinesisRecordConverter { + + private final InputCodec codec; + + public KinesisRecordConverter(final InputCodec codec) { + this.codec = codec; + } + + public List> convert(final DecompressionEngine decompressionEngine, + List kinesisClientRecords, + final String streamName) throws IOException { + List> records = new ArrayList<>(); + for (KinesisClientRecord kinesisClientRecord : kinesisClientRecords) { + processRecord(decompressionEngine, kinesisClientRecord, record -> { + records.add(record); + Event event = record.getData(); + EventMetadata eventMetadata = event.getMetadata(); + eventMetadata.setAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE, + streamName.toLowerCase()); + eventMetadata.setAttribute(MetadataKeyAttributes.KINESIS_PARTITION_KEY_METADATA_ATTRIBUTE, kinesisClientRecord.partitionKey()); + eventMetadata.setAttribute(MetadataKeyAttributes.KINESIS_SEQUENCE_NUMBER_METADATA_ATTRIBUTE, kinesisClientRecord.sequenceNumber()); + eventMetadata.setAttribute(MetadataKeyAttributes.KINESIS_SUB_SEQUENCE_NUMBER_METADATA_ATTRIBUTE, kinesisClientRecord.subSequenceNumber()); + final Instant externalOriginationTime = kinesisClientRecord.approximateArrivalTimestamp(); + event.getEventHandle().setExternalOriginationTime(externalOriginationTime); + event.getMetadata().setExternalOriginationTime(externalOriginationTime); + }); + } + return records; + } + + private void processRecord(final DecompressionEngine decompressionEngine, + KinesisClientRecord record, + Consumer> eventConsumer) throws IOException { + // Read bytebuffer + byte[] arr = new byte[record.data().remaining()]; + record.data().get(arr); + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(arr); + + codec.parse(decompressionEngine.createInputStream(byteArrayInputStream), eventConsumer); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/MetadataKeyAttributes.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/MetadataKeyAttributes.java new file mode 100644 index 0000000000..4335193cfb --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/MetadataKeyAttributes.java @@ -0,0 +1,18 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.converter; + +public class MetadataKeyAttributes { + public static final String KINESIS_STREAM_NAME_METADATA_ATTRIBUTE = "stream_name"; + public static final String KINESIS_PARTITION_KEY_METADATA_ATTRIBUTE = "partition_key"; + public static final String KINESIS_SEQUENCE_NUMBER_METADATA_ATTRIBUTE = "sequence_number"; + public static final String KINESIS_SUB_SEQUENCE_NUMBER_METADATA_ATTRIBUTE = "sub_sequence_number"; +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerRecord.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerRecord.java new file mode 100644 index 0000000000..b891de2bd0 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerRecord.java @@ -0,0 +1,26 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; +import software.amazon.kinesis.processor.RecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; + +@Builder +@Getter +@Setter +public class KinesisCheckpointerRecord { + private RecordProcessorCheckpointer checkpointer; + private ExtendedSequenceNumber extendedSequenceNumber; + private boolean readyToCheckpoint; +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerTracker.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerTracker.java new file mode 100644 index 0000000000..8fb7c5ec6c --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerTracker.java @@ -0,0 +1,68 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import software.amazon.kinesis.processor.RecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class KinesisCheckpointerTracker { + private final Map checkpointerRecordList = new LinkedHashMap<>(); + + public synchronized void addRecordForCheckpoint(final ExtendedSequenceNumber extendedSequenceNumber, + final RecordProcessorCheckpointer checkpointer) { + checkpointerRecordList.put(extendedSequenceNumber, KinesisCheckpointerRecord.builder() + .extendedSequenceNumber(extendedSequenceNumber) + .checkpointer(checkpointer) + .readyToCheckpoint(false) + .build()); + } + + public synchronized void markSequenceNumberForCheckpoint(final ExtendedSequenceNumber extendedSequenceNumber) { + if (!checkpointerRecordList.containsKey(extendedSequenceNumber)) { + throw new IllegalArgumentException("checkpointer not available"); + } + checkpointerRecordList.get(extendedSequenceNumber).setReadyToCheckpoint(true); + } + + public synchronized Optional popLatestReadyToCheckpointRecord() { + Optional kinesisCheckpointerRecordOptional = Optional.empty(); + List toRemoveRecords = new ArrayList<>(); + + for (Map.Entry entry: checkpointerRecordList.entrySet()) { + KinesisCheckpointerRecord kinesisCheckpointerRecord = entry.getValue(); + + // Break out of the loop on the first record which is not ready for checkpoint + if (!kinesisCheckpointerRecord.isReadyToCheckpoint()) { + break; + } + + kinesisCheckpointerRecordOptional = Optional.of(kinesisCheckpointerRecord); + toRemoveRecords.add(entry.getKey()); + } + + //Cleanup the ones which are already marked for checkpoint + for (ExtendedSequenceNumber extendedSequenceNumber: toRemoveRecords) { + checkpointerRecordList.remove(extendedSequenceNumber); + } + + return kinesisCheckpointerRecordOptional; + } + + public synchronized int size() { + return checkpointerRecordList.size(); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisRecordProcessor.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisRecordProcessor.java new file mode 100644 index 0000000000..9c216aa9a5 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisRecordProcessor.java @@ -0,0 +1,269 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import com.google.common.annotations.VisibleForTesting; +import io.micrometer.core.instrument.Counter; +import org.opensearch.dataprepper.buffer.common.BufferAccumulator; +import org.opensearch.dataprepper.common.concurrent.BackgroundThreadFactory; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.converter.KinesisRecordConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import software.amazon.kinesis.common.StreamIdentifier; +import software.amazon.kinesis.exceptions.InvalidStateException; +import software.amazon.kinesis.exceptions.ShutdownException; +import software.amazon.kinesis.exceptions.ThrottlingException; +import software.amazon.kinesis.lifecycle.events.InitializationInput; +import software.amazon.kinesis.lifecycle.events.LeaseLostInput; +import software.amazon.kinesis.lifecycle.events.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.events.ShardEndedInput; +import software.amazon.kinesis.lifecycle.events.ShutdownRequestedInput; +import software.amazon.kinesis.processor.RecordProcessorCheckpointer; +import software.amazon.kinesis.processor.ShardRecordProcessor; +import software.amazon.kinesis.retrieval.KinesisClientRecord; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; + +import java.time.Duration; +import java.util.List; +import java.util.ListIterator; +import java.util.Optional; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; + +public class KinesisRecordProcessor implements ShardRecordProcessor { + private static final Logger LOG = LoggerFactory.getLogger(KinesisRecordProcessor.class); + + private static final int DEFAULT_MONITOR_WAIT_TIME_MS = 15_000; + private static final Duration ACKNOWLEDGEMENT_SET_TIMEOUT = Duration.ofSeconds(20); + + private final StreamIdentifier streamIdentifier; + private final KinesisStreamConfig kinesisStreamConfig; + private final Duration checkpointInterval; + private final KinesisSourceConfig kinesisSourceConfig; + private final BufferAccumulator> bufferAccumulator; + private final KinesisRecordConverter kinesisRecordConverter; + private final KinesisCheckpointerTracker kinesisCheckpointerTracker; + private final ExecutorService executorService; + private String kinesisShardId; + private long lastCheckpointTimeInMillis; + private final int bufferTimeoutMillis; + private final AcknowledgementSetManager acknowledgementSetManager; + + private final Counter acknowledgementSetSuccesses; + private final Counter acknowledgementSetFailures; + private final Counter recordsProcessed; + private final Counter recordProcessingErrors; + private final Counter checkpointFailures; + public static final String ACKNOWLEDGEMENT_SET_SUCCESS_METRIC_NAME = "acknowledgementSetSuccesses"; + public static final String ACKNOWLEDGEMENT_SET_FAILURES_METRIC_NAME = "acknowledgementSetFailures"; + public static final String KINESIS_RECORD_PROCESSED = "recordProcessed"; + public static final String KINESIS_RECORD_PROCESSING_ERRORS = "recordProcessingErrors"; + public static final String KINESIS_CHECKPOINT_FAILURES = "checkpointFailures"; + public static final String KINESIS_STREAM_TAG_KEY = "stream"; + private AtomicBoolean isStopRequested; + + public KinesisRecordProcessor(final BufferAccumulator> bufferAccumulator, + final KinesisSourceConfig kinesisSourceConfig, + final AcknowledgementSetManager acknowledgementSetManager, + final PluginMetrics pluginMetrics, + final KinesisRecordConverter kinesisRecordConverter, + final KinesisCheckpointerTracker kinesisCheckpointerTracker, + final StreamIdentifier streamIdentifier) { + this.bufferTimeoutMillis = (int) kinesisSourceConfig.getBufferTimeout().toMillis(); + this.streamIdentifier = streamIdentifier; + this.kinesisSourceConfig = kinesisSourceConfig; + this.kinesisStreamConfig = getStreamConfig(kinesisSourceConfig); + this.kinesisRecordConverter = kinesisRecordConverter; + this.acknowledgementSetManager = acknowledgementSetManager; + this.acknowledgementSetSuccesses = pluginMetrics.counterWithTags(ACKNOWLEDGEMENT_SET_SUCCESS_METRIC_NAME, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName()); + this.acknowledgementSetFailures = pluginMetrics.counterWithTags(ACKNOWLEDGEMENT_SET_FAILURES_METRIC_NAME, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName()); + this.recordsProcessed = pluginMetrics.counterWithTags(KINESIS_RECORD_PROCESSED, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName()); + this.recordProcessingErrors = pluginMetrics.counterWithTags(KINESIS_RECORD_PROCESSING_ERRORS, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName()); + this.checkpointFailures = pluginMetrics.counterWithTags(KINESIS_CHECKPOINT_FAILURES, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName()); + this.checkpointInterval = kinesisStreamConfig.getCheckPointInterval(); + this.bufferAccumulator = bufferAccumulator; + this.kinesisCheckpointerTracker = kinesisCheckpointerTracker; + this.executorService = Executors.newSingleThreadExecutor(BackgroundThreadFactory.defaultExecutorThreadFactory("kinesis-ack-monitor")); + this.isStopRequested = new AtomicBoolean(false); + } + + private KinesisStreamConfig getStreamConfig(final KinesisSourceConfig kinesisSourceConfig) { + return kinesisSourceConfig.getStreams().stream().filter(streamConfig -> streamConfig.getName().equals(streamIdentifier.streamName())).findAny().get(); + } + + @Override + public void initialize(InitializationInput initializationInput) { + // Called once when the processor is initialized. + kinesisShardId = initializationInput.shardId(); + String kinesisStreamName = streamIdentifier.streamName(); + LOG.info("Initialize Processor for stream: {}, shard: {}", kinesisStreamName, kinesisShardId); + lastCheckpointTimeInMillis = System.currentTimeMillis(); + + if (kinesisSourceConfig.isAcknowledgments()) { + executorService.submit(() -> monitorCheckpoint(executorService)); + } + } + + private void monitorCheckpoint(final ExecutorService executorService) { + while (!isStopRequested.get()) { + if (System.currentTimeMillis() - lastCheckpointTimeInMillis >= checkpointInterval.toMillis()) { + doCheckpoint(); + } + try { + Thread.sleep(DEFAULT_MONITOR_WAIT_TIME_MS); + } catch (InterruptedException ex) { + break; + } + } + executorService.shutdown(); + } + + private AcknowledgementSet createAcknowledgmentSet(final ProcessRecordsInput processRecordsInput, + final ExtendedSequenceNumber extendedSequenceNumber) { + return acknowledgementSetManager.create((result) -> { + String kinesisStreamName = streamIdentifier.streamName(); + if (result) { + acknowledgementSetSuccesses.increment(); + kinesisCheckpointerTracker.markSequenceNumberForCheckpoint(extendedSequenceNumber); + LOG.debug("acknowledgements received for stream: {}, shardId: {}", kinesisStreamName, kinesisShardId); + } else { + acknowledgementSetFailures.increment(); + LOG.debug("acknowledgements received with false for stream: {}, shardId: {}", kinesisStreamName, kinesisShardId); + } + }, ACKNOWLEDGEMENT_SET_TIMEOUT); + } + + @Override + public void processRecords(ProcessRecordsInput processRecordsInput) { + try { + Optional acknowledgementSetOpt = Optional.empty(); + boolean acknowledgementsEnabled = kinesisSourceConfig.isAcknowledgments(); + ExtendedSequenceNumber extendedSequenceNumber = getLatestSequenceNumberFromInput(processRecordsInput); + if (acknowledgementsEnabled) { + acknowledgementSetOpt = Optional.of(createAcknowledgmentSet(processRecordsInput, extendedSequenceNumber)); + } + + // Track the records for checkpoint purpose + kinesisCheckpointerTracker.addRecordForCheckpoint(extendedSequenceNumber, processRecordsInput.checkpointer()); + List> records = kinesisRecordConverter.convert( + kinesisStreamConfig.getCompression().getDecompressionEngine(), + processRecordsInput.records(), streamIdentifier.streamName()); + + int eventCount = 0; + for (Record record: records) { + Event event = record.getData(); + acknowledgementSetOpt.ifPresent(acknowledgementSet -> acknowledgementSet.add(event)); + + bufferAccumulator.add(record); + eventCount++; + } + + // Flush buffer at the end + bufferAccumulator.flush(); + recordsProcessed.increment(eventCount); + + // If acks are not enabled, mark the sequence number for checkpoint + if (!acknowledgementsEnabled) { + kinesisCheckpointerTracker.markSequenceNumberForCheckpoint(extendedSequenceNumber); + } + + LOG.debug("Number of Records {} written for stream: {}, shardId: {}", eventCount, streamIdentifier.streamName(), kinesisShardId); + + acknowledgementSetOpt.ifPresent(AcknowledgementSet::complete); + + // Checkpoint for shard + if (!acknowledgementsEnabled && (System.currentTimeMillis() - lastCheckpointTimeInMillis >= checkpointInterval.toMillis())) { + doCheckpoint(); + } + } catch (Exception ex) { + recordProcessingErrors.increment(); + LOG.error("Failed writing shard data to buffer: ", ex); + } + } + + @Override + public void leaseLost(LeaseLostInput leaseLostInput) { + LOG.debug("Lease Lost"); + } + + @Override + public void shardEnded(ShardEndedInput shardEndedInput) { + String kinesisStream = streamIdentifier.streamName(); + LOG.debug("Reached shard end, checkpointing for stream: {}, shardId: {}", kinesisStream, kinesisShardId); + checkpoint(shardEndedInput.checkpointer()); + } + + @Override + public void shutdownRequested(ShutdownRequestedInput shutdownRequestedInput) { + String kinesisStream = streamIdentifier.streamName(); + isStopRequested.set(true); + LOG.debug("Scheduler is shutting down, checkpointing for stream: {}, shardId: {}", kinesisStream, kinesisShardId); + checkpoint(shutdownRequestedInput.checkpointer()); + } + + @VisibleForTesting + public void checkpoint(RecordProcessorCheckpointer checkpointer, String sequenceNumber, long subSequenceNumber) { + try { + String kinesisStream = streamIdentifier.streamName(); + LOG.debug("Checkpoint for stream: {}, shardId: {}, sequence: {}, subsequence: {}", kinesisStream, kinesisShardId, sequenceNumber, subSequenceNumber); + checkpointer.checkpoint(sequenceNumber, subSequenceNumber); + } catch (ShutdownException | ThrottlingException | InvalidStateException ex) { + LOG.debug("Caught exception at checkpoint, skipping checkpoint.", ex); + checkpointFailures.increment(); + } + } + + private void doCheckpoint() { + LOG.debug("Regular checkpointing for shard {}", kinesisShardId); + Optional kinesisCheckpointerRecordOptional = kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord(); + if (kinesisCheckpointerRecordOptional.isPresent()) { + ExtendedSequenceNumber lastExtendedSequenceNumber = kinesisCheckpointerRecordOptional.get().getExtendedSequenceNumber(); + RecordProcessorCheckpointer recordProcessorCheckpointer = kinesisCheckpointerRecordOptional.get().getCheckpointer(); + checkpoint(recordProcessorCheckpointer, lastExtendedSequenceNumber.sequenceNumber(), lastExtendedSequenceNumber.subSequenceNumber()); + lastCheckpointTimeInMillis = System.currentTimeMillis(); + } + } + + private void checkpoint(RecordProcessorCheckpointer checkpointer) { + try { + String kinesisStream = streamIdentifier.streamName(); + LOG.debug("Checkpoint for stream: {}, shardId: {}", kinesisStream, kinesisShardId); + checkpointer.checkpoint(); + } catch (ShutdownException | ThrottlingException | InvalidStateException ex) { + LOG.debug("Caught exception at checkpoint, skipping checkpoint.", ex); + checkpointFailures.increment(); + } + } + + private ExtendedSequenceNumber getLatestSequenceNumberFromInput(final ProcessRecordsInput processRecordsInput) { + ListIterator recordIterator = processRecordsInput.records().listIterator(); + ExtendedSequenceNumber largestExtendedSequenceNumber = null; + while (recordIterator.hasNext()) { + KinesisClientRecord record = recordIterator.next(); + ExtendedSequenceNumber extendedSequenceNumber = + new ExtendedSequenceNumber(record.sequenceNumber(), record.subSequenceNumber()); + + if (largestExtendedSequenceNumber == null + || largestExtendedSequenceNumber.compareTo(extendedSequenceNumber) < 0) { + largestExtendedSequenceNumber = extendedSequenceNumber; + } + } + return largestExtendedSequenceNumber; + } +} diff --git a/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisShardRecordProcessorFactory.java b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisShardRecordProcessorFactory.java new file mode 100644 index 0000000000..ff9943a41d --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/main/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisShardRecordProcessorFactory.java @@ -0,0 +1,59 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import org.opensearch.dataprepper.buffer.common.BufferAccumulator; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.converter.KinesisRecordConverter; +import software.amazon.kinesis.common.StreamIdentifier; +import software.amazon.kinesis.processor.ShardRecordProcessor; +import software.amazon.kinesis.processor.ShardRecordProcessorFactory; + +public class KinesisShardRecordProcessorFactory implements ShardRecordProcessorFactory { + + private final Buffer> buffer; + private final KinesisSourceConfig kinesisSourceConfig; + private final AcknowledgementSetManager acknowledgementSetManager; + private final PluginMetrics pluginMetrics; + private final KinesisRecordConverter kinesisRecordConverter; + + public KinesisShardRecordProcessorFactory(Buffer> buffer, + KinesisSourceConfig kinesisSourceConfig, + final AcknowledgementSetManager acknowledgementSetManager, + final PluginMetrics pluginMetrics, + final InputCodec codec) { + this.kinesisSourceConfig = kinesisSourceConfig; + this.buffer = buffer; + this.acknowledgementSetManager = acknowledgementSetManager; + this.pluginMetrics = pluginMetrics; + this.kinesisRecordConverter = new KinesisRecordConverter(codec); + } + + @Override + public ShardRecordProcessor shardRecordProcessor() { + throw new UnsupportedOperationException("Use the method with stream details!"); + } + + @Override + public ShardRecordProcessor shardRecordProcessor(StreamIdentifier streamIdentifier) { + BufferAccumulator> bufferAccumulator = BufferAccumulator.create(buffer, + kinesisSourceConfig.getNumberOfRecordsToAccumulate(), kinesisSourceConfig.getBufferTimeout()); + KinesisCheckpointerTracker kinesisCheckpointerTracker = new KinesisCheckpointerTracker(); + return new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, acknowledgementSetManager, + pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + } +} \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigExtensionTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigExtensionTest.java new file mode 100644 index 0000000000..852baab195 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigExtensionTest.java @@ -0,0 +1,48 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.opensearch.dataprepper.model.plugin.ExtensionPoints; +import org.opensearch.dataprepper.model.plugin.ExtensionProvider; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +public class KinesisLeaseConfigExtensionTest { + @Mock + private ExtensionPoints extensionPoints; + + @Mock + private KinesisLeaseConfig kinesisLeaseConfig; + + private KinesisLeaseConfigExtension createObjectUnderTest() { + return new KinesisLeaseConfigExtension(kinesisLeaseConfig); + } + + @Test + void applyShouldAddExtensionProvider() { + extensionPoints = mock(ExtensionPoints.class); + createObjectUnderTest().apply(extensionPoints); + final ArgumentCaptor extensionProviderArgumentCaptor = + ArgumentCaptor.forClass(ExtensionProvider.class); + + verify(extensionPoints).addExtensionProvider(extensionProviderArgumentCaptor.capture()); + + final ExtensionProvider actualExtensionProvider = extensionProviderArgumentCaptor.getValue(); + + assertThat(actualExtensionProvider, instanceOf(KinesisLeaseConfigProvider.class)); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigProviderTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigProviderTest.java new file mode 100644 index 0000000000..1fa17f5f42 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigProviderTest.java @@ -0,0 +1,57 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.model.plugin.ExtensionProvider; + +import java.util.Optional; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.sameInstance; +import static org.hamcrest.MatcherAssert.assertThat; + +@ExtendWith(MockitoExtension.class) +public class KinesisLeaseConfigProviderTest { + @Mock + private KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier; + + @Mock + private ExtensionProvider.Context context; + + private KinesisLeaseConfigProvider createObjectUnderTest() { + return new KinesisLeaseConfigProvider(kinesisLeaseConfigSupplier); + } + + @Test + void supportedClassReturnsKinesisSourceConfigSupplier() { + assertThat(createObjectUnderTest().supportedClass(), equalTo(KinesisLeaseConfigSupplier.class)); + } + + @Test + void provideInstanceReturnsKinesisSourceConfigSupplierFromConstructor() { + final KinesisLeaseConfigProvider objectUnderTest = createObjectUnderTest(); + + final Optional optionalKinesisSourceConfigSupplier = objectUnderTest.provideInstance(context); + assertThat(optionalKinesisSourceConfigSupplier, notNullValue()); + assertThat(optionalKinesisSourceConfigSupplier.isPresent(), equalTo(true)); + assertThat(optionalKinesisSourceConfigSupplier.get(), equalTo(kinesisLeaseConfigSupplier)); + + final Optional anotherOptionalKinesisSourceConfigSupplier = objectUnderTest.provideInstance(context); + assertThat(anotherOptionalKinesisSourceConfigSupplier, notNullValue()); + assertThat(anotherOptionalKinesisSourceConfigSupplier.isPresent(), equalTo(true)); + assertThat(anotherOptionalKinesisSourceConfigSupplier.get(), sameInstance(optionalKinesisSourceConfigSupplier.get())); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigSupplierTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigSupplierTest.java new file mode 100644 index 0000000000..4cfc323ed5 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigSupplierTest.java @@ -0,0 +1,60 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Optional; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class KinesisLeaseConfigSupplierTest { + private static final String LEASE_COORDINATION_TABLE = "lease-table"; + @Mock + KinesisLeaseConfig kinesisLeaseConfig; + + @Mock + KinesisLeaseCoordinationTableConfig kinesisLeaseCoordinationTableConfig; + + private KinesisLeaseConfigSupplier createObjectUnderTest() { + return new KinesisLeaseConfigSupplier(kinesisLeaseConfig); + } + + @Test + void testGetters() { + when(kinesisLeaseConfig.getLeaseCoordinationTable()).thenReturn(kinesisLeaseCoordinationTableConfig); + when(kinesisLeaseCoordinationTableConfig.getTableName()).thenReturn(LEASE_COORDINATION_TABLE); + when(kinesisLeaseCoordinationTableConfig.getRegion()).thenReturn("us-east-1"); + KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier = createObjectUnderTest(); + assertThat(kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig().get().getLeaseCoordinationTable().getTableName(), equalTo(LEASE_COORDINATION_TABLE)); + assertThat(kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig().get().getLeaseCoordinationTable().getRegion(), equalTo("us-east-1")); + } + + @Test + void testGettersWithNullTableConfig() { + when(kinesisLeaseConfig.getLeaseCoordinationTable()).thenReturn(null); + KinesisLeaseConfigSupplier defaultKinesisLeaseConfigSupplier = createObjectUnderTest(); + assertThat(defaultKinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig().get().getLeaseCoordinationTable(), equalTo(null)); + + } + + @Test + void testGettersWithNullConfig() { + KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier = new KinesisLeaseConfigSupplier(null); + assertThat(kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig(), equalTo(Optional.empty())); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigTest.java new file mode 100644 index 0000000000..311e33cc9c --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/extension/KinesisLeaseConfigTest.java @@ -0,0 +1,65 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.extension; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.model.types.ByteCount; +import org.opensearch.dataprepper.core.parser.model.DataPrepperConfiguration; +import org.opensearch.dataprepper.pipeline.parser.ByteCountDeserializer; +import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import software.amazon.awssdk.regions.Region; + +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.time.Duration; +import java.util.Map; + +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class KinesisLeaseConfigTest { + private static SimpleModule simpleModule = new SimpleModule() + .addDeserializer(Duration.class, new DataPrepperDurationDeserializer()) + .addDeserializer(ByteCount.class, new ByteCountDeserializer()); + private static ObjectMapper OBJECT_MAPPER = new ObjectMapper(new YAMLFactory()).registerModule(simpleModule); + + private KinesisLeaseConfig makeConfig(String filePath) throws IOException { + final File configurationFile = new File(filePath); + final DataPrepperConfiguration dataPrepperConfiguration = OBJECT_MAPPER.readValue(configurationFile, DataPrepperConfiguration.class); + assertThat(dataPrepperConfiguration, notNullValue()); + assertThat(dataPrepperConfiguration.getPipelineExtensions(), notNullValue()); + final Map kinesisLeaseConfigMap = + (Map) dataPrepperConfiguration.getPipelineExtensions().getExtensionMap().get("kinesis"); + String json = OBJECT_MAPPER.writeValueAsString(kinesisLeaseConfigMap); + Reader reader = new StringReader(json); + return OBJECT_MAPPER.readValue(reader, KinesisLeaseConfig.class); + } + + + @Test + void testConfigWithTestExtension() throws IOException { + final KinesisLeaseConfig kinesisLeaseConfig = makeConfig( + "src/test/resources/simple_pipeline_with_extensions.yaml"); + + assertNotNull(kinesisLeaseConfig.getLeaseCoordinationTable()); + assertEquals(kinesisLeaseConfig.getLeaseCoordinationTable().getTableName(), "kinesis-pipeline-kcl"); + assertEquals(kinesisLeaseConfig.getLeaseCoordinationTable().getRegion(), "us-east-1"); + assertEquals(kinesisLeaseConfig.getLeaseCoordinationTable().getAwsRegion(), Region.US_EAST_1); + } + +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisClientFactoryTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisClientFactoryTest.java new file mode 100644 index 0000000000..f476754eb9 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisClientFactoryTest.java @@ -0,0 +1,64 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.AwsAuthenticationConfig; +import org.opensearch.dataprepper.test.helper.ReflectivelySetField; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; +import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class KinesisClientFactoryTest { + private Region region = Region.US_EAST_1; + private String roleArn; + private Map stsHeader; + private AwsCredentialsSupplier awsCredentialsSupplier; + + @Test + void testCreateClient() throws NoSuchFieldException, IllegalAccessException { + roleArn = "arn:aws:iam::278936200144:role/test-role"; + stsHeader= new HashMap<>(); + stsHeader.put(UUID.randomUUID().toString(),UUID.randomUUID().toString()); + awsCredentialsSupplier = mock(AwsCredentialsSupplier.class); + + AwsAuthenticationConfig awsAuthenticationOptionsConfig = new AwsAuthenticationConfig(); + ReflectivelySetField.setField(AwsAuthenticationConfig.class, awsAuthenticationOptionsConfig, "awsRegion", "us-east-1"); + ReflectivelySetField.setField(AwsAuthenticationConfig.class, awsAuthenticationOptionsConfig, "awsStsRoleArn", roleArn); + + AwsCredentialsProvider defaultCredentialsProvider = mock(AwsCredentialsProvider.class); + when(awsCredentialsSupplier.getProvider(eq(AwsCredentialsOptions.defaultOptions()))).thenReturn(defaultCredentialsProvider); + + KinesisClientFactory clientFactory = new KinesisClientFactory(awsCredentialsSupplier, awsAuthenticationOptionsConfig); + + final DynamoDbAsyncClient dynamoDbAsyncClient = clientFactory.buildDynamoDBClient(Region.US_EAST_1); + assertNotNull(dynamoDbAsyncClient); + + final KinesisAsyncClient kinesisAsyncClient = clientFactory.buildKinesisAsyncClient(Region.US_EAST_1); + assertNotNull(kinesisAsyncClient); + + final CloudWatchAsyncClient cloudWatchAsyncClient = clientFactory.buildCloudWatchAsyncClient(Region.US_EAST_1); + assertNotNull(cloudWatchAsyncClient); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisMultiStreamTrackerTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisMultiStreamTrackerTest.java new file mode 100644 index 0000000000..edf23b8033 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisMultiStreamTrackerTest.java @@ -0,0 +1,153 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import com.google.common.collect.ImmutableList; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamRequest; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamResponse; +import software.amazon.awssdk.services.kinesis.model.StreamDescription; +import software.amazon.kinesis.common.InitialPositionInStream; +import software.amazon.kinesis.common.InitialPositionInStreamExtended; +import software.amazon.kinesis.common.StreamConfig; +import software.amazon.kinesis.common.StreamIdentifier; +import software.amazon.kinesis.processor.FormerStreamsLeasesDeletionStrategy; + +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class KinesisMultiStreamTrackerTest { + private static final String APPLICATION_NAME = "multi-stream-application"; + private static final String awsAccountId = "1234"; + private static final String streamArnFormat = "arn:aws:kinesis:us-east-1:%s:stream/%s"; + private static final Instant streamCreationTime = Instant.now(); + private static final List STREAMS_LIST = ImmutableList.of("stream-1", "stream-2", "stream-3"); + + private KinesisMultiStreamTracker kinesisMultiStreamTracker; + @Mock + private KinesisAsyncClient kinesisClient; + private List streamConfigList; + + private Map streamConfigMap; + + @Mock + KinesisSourceConfig kinesisSourceConfig; + + @BeforeEach + public void setUp() { + MockitoAnnotations.openMocks(this); + List kinesisStreamConfigs = new ArrayList<>(); + streamConfigMap = new HashMap<>(); + STREAMS_LIST.forEach(stream -> { + KinesisStreamConfig kinesisStreamConfig = mock(KinesisStreamConfig.class); + when(kinesisStreamConfig.getName()).thenReturn(stream); + when(kinesisStreamConfig.getInitialPosition()).thenReturn(InitialPositionInStream.LATEST); + + StreamDescription streamDescription = StreamDescription.builder() + .streamARN(String.format(streamArnFormat, awsAccountId, stream)) + .streamCreationTimestamp(streamCreationTime) + .streamName(stream) + .build(); + + DescribeStreamRequest describeStreamRequest = DescribeStreamRequest.builder() + .streamName(stream) + .build(); + + DescribeStreamResponse describeStreamResponse = DescribeStreamResponse.builder() + .streamDescription(streamDescription) + .build(); + + when(kinesisClient.describeStream(describeStreamRequest)).thenReturn(CompletableFuture.completedFuture(describeStreamResponse)); + kinesisStreamConfigs.add(kinesisStreamConfig); + + streamConfigMap.put(stream, kinesisStreamConfig); + }); + + when(kinesisSourceConfig.getStreams()).thenReturn(kinesisStreamConfigs); + kinesisMultiStreamTracker = new KinesisMultiStreamTracker(kinesisClient, kinesisSourceConfig, APPLICATION_NAME); + } + + @Test + public void testStreamConfigList() { + streamConfigList = kinesisMultiStreamTracker.streamConfigList(); + assertEquals(kinesisSourceConfig.getStreams().size(), streamConfigList.size()); + + int totalStreams = streamConfigList.size(); + for (int i=0; i kinesisStreamConfigs = new ArrayList<>(); + streamConfigMap = new HashMap<>(); + STREAMS_LIST.forEach(stream -> { + KinesisStreamConfig kinesisStreamConfig = mock(KinesisStreamConfig.class); + when(kinesisStreamConfig.getName()).thenReturn(stream); + when(kinesisStreamConfig.getInitialPosition()).thenReturn(InitialPositionInStream.LATEST); + + DescribeStreamRequest describeStreamRequest = DescribeStreamRequest.builder() + .streamName(stream) + .build(); + + when(kinesisClient.describeStream(describeStreamRequest)).thenThrow(new RuntimeException()); + kinesisStreamConfigs.add(kinesisStreamConfig); + + streamConfigMap.put(stream, kinesisStreamConfig); + }); + + when(kinesisSourceConfig.getStreams()).thenReturn(kinesisStreamConfigs); + kinesisMultiStreamTracker = new KinesisMultiStreamTracker(kinesisClient, kinesisSourceConfig, APPLICATION_NAME); + + assertThrows(RuntimeException.class, () -> kinesisMultiStreamTracker.streamConfigList()); + } + + @Test + public void formerStreamsLeasesDeletionStrategy() { + + FormerStreamsLeasesDeletionStrategy formerStreamsLeasesDeletionStrategy = + kinesisMultiStreamTracker.formerStreamsLeasesDeletionStrategy(); + + Duration duration = formerStreamsLeasesDeletionStrategy.waitPeriodToDeleteFormerStreams(); + + Assertions.assertTrue(formerStreamsLeasesDeletionStrategy instanceof + FormerStreamsLeasesDeletionStrategy.AutoDetectionAndDeferredDeletionStrategy); + assertEquals(10, duration.getSeconds()); + } + + private StreamIdentifier getStreamIdentifier(final String streamName) { + return StreamIdentifier.multiStreamInstance(String.join(":", awsAccountId, streamName, String.valueOf(streamCreationTime.getEpochSecond()))); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisServiceTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisServiceTest.java new file mode 100644 index 0000000000..2a95cba8c7 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisServiceTest.java @@ -0,0 +1,355 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfig; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfigSupplier; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseCoordinationTableConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.AwsAuthenticationConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.ConsumerStrategy; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamPollingConfig; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; +import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; +import software.amazon.awssdk.services.kinesis.KinesisServiceClientConfiguration; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamRequest; +import software.amazon.awssdk.services.kinesis.model.DescribeStreamResponse; +import software.amazon.awssdk.services.kinesis.model.StreamDescription; +import software.amazon.kinesis.common.InitialPositionInStream; +import software.amazon.kinesis.coordinator.Scheduler; +import software.amazon.kinesis.metrics.MetricsLevel; + +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class KinesisServiceTest { + private final String PIPELINE_NAME = "kinesis-pipeline-test"; + private final String streamId = "stream-1"; + private static final String codec_plugin_name = "json"; + + private static final Duration CHECKPOINT_INTERVAL = Duration.ofMillis(0); + private static final int NUMBER_OF_RECORDS_TO_ACCUMULATE = 10; + private static final int DEFAULT_MAX_RECORDS = 10000; + private static final int IDLE_TIME_BETWEEN_READS_IN_MILLIS = 250; + private static final int DEFAULT_INITIALIZATION_ATTEMPTS = 10; + private static final String awsAccountId = "123456789012"; + private static final String streamArnFormat = "arn:aws:kinesis:us-east-1:%s:stream/%s"; + private static final Instant streamCreationTime = Instant.now(); + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private PluginFactory pluginFactory; + + @Mock + private KinesisSourceConfig kinesisSourceConfig; + + @Mock + private KinesisStreamConfig kinesisStreamConfig; + + @Mock + private KinesisStreamPollingConfig kinesisStreamPollingConfig; + + @Mock + private AwsAuthenticationConfig awsAuthenticationConfig; + @Mock + private AcknowledgementSetManager acknowledgementSetManager; + + @Mock + private PipelineDescription pipelineDescription; + + @Mock + private KinesisClientFactory kinesisClientFactory; + + @Mock + private KinesisAsyncClient kinesisClient; + + @Mock + private DynamoDbAsyncClient dynamoDbClient; + + @Mock + private CloudWatchAsyncClient cloudWatchClient; + + @Mock + Buffer> buffer; + + @Mock + private Scheduler scheduler; + + @Mock + KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier; + + @Mock + KinesisLeaseConfig kinesisLeaseConfig; + + @Mock + KinesisLeaseCoordinationTableConfig kinesisLeaseCoordinationTableConfig; + + @Mock + WorkerIdentifierGenerator workerIdentifierGenerator; + + @BeforeEach + void setup() { + awsAuthenticationConfig = mock(AwsAuthenticationConfig.class); + kinesisSourceConfig = mock(KinesisSourceConfig.class); + kinesisStreamConfig = mock(KinesisStreamConfig.class); + kinesisStreamPollingConfig = mock(KinesisStreamPollingConfig.class); + kinesisClient = mock(KinesisAsyncClient.class); + dynamoDbClient = mock(DynamoDbAsyncClient.class); + cloudWatchClient = mock(CloudWatchAsyncClient.class); + kinesisClientFactory = mock(KinesisClientFactory.class); + scheduler = mock(Scheduler.class); + pipelineDescription = mock(PipelineDescription.class); + buffer = mock(Buffer.class); + kinesisLeaseConfigSupplier = mock(KinesisLeaseConfigSupplier.class); + kinesisLeaseConfig = mock(KinesisLeaseConfig.class); + workerIdentifierGenerator = mock(WorkerIdentifierGenerator.class); + kinesisLeaseCoordinationTableConfig = mock(KinesisLeaseCoordinationTableConfig.class); + when(kinesisLeaseConfig.getLeaseCoordinationTable()).thenReturn(kinesisLeaseCoordinationTableConfig); + when(kinesisLeaseCoordinationTableConfig.getTableName()).thenReturn("kinesis-lease-table"); + when(kinesisLeaseCoordinationTableConfig.getRegion()).thenReturn("us-east-1"); + when(kinesisLeaseCoordinationTableConfig.getAwsRegion()).thenReturn(Region.US_EAST_1); + when(kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig()).thenReturn(Optional.ofNullable(kinesisLeaseConfig)); + + when(awsAuthenticationConfig.getAwsRegion()).thenReturn(Region.of("us-west-2")); + when(awsAuthenticationConfig.getAwsStsRoleArn()).thenReturn(UUID.randomUUID().toString()); + when(awsAuthenticationConfig.getAwsStsExternalId()).thenReturn(UUID.randomUUID().toString()); + final Map stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + when(awsAuthenticationConfig.getAwsStsHeaderOverrides()).thenReturn(stsHeaderOverrides); + StreamDescription streamDescription = StreamDescription.builder() + .streamARN(String.format(streamArnFormat, awsAccountId, streamId)) + .streamCreationTimestamp(streamCreationTime) + .streamName(streamId) + .build(); + + DescribeStreamRequest describeStreamRequest = DescribeStreamRequest.builder() + .streamName(streamId) + .build(); + + DescribeStreamResponse describeStreamResponse = DescribeStreamResponse.builder() + .streamDescription(streamDescription) + .build(); + + when(kinesisClient.describeStream(describeStreamRequest)).thenReturn(CompletableFuture.completedFuture(describeStreamResponse)); + + when(kinesisSourceConfig.getAwsAuthenticationConfig()).thenReturn(awsAuthenticationConfig); + when(kinesisStreamConfig.getName()).thenReturn(streamId); + when(kinesisStreamConfig.getCheckPointInterval()).thenReturn(CHECKPOINT_INTERVAL); + when(kinesisStreamConfig.getInitialPosition()).thenReturn(InitialPositionInStream.LATEST); + when(kinesisSourceConfig.getConsumerStrategy()).thenReturn(ConsumerStrategy.ENHANCED_FAN_OUT); + when(kinesisSourceConfig.getPollingConfig()).thenReturn(kinesisStreamPollingConfig); + when(kinesisStreamPollingConfig.getMaxPollingRecords()).thenReturn(DEFAULT_MAX_RECORDS); + when(kinesisStreamPollingConfig.getIdleTimeBetweenReads()).thenReturn(Duration.ofMillis(IDLE_TIME_BETWEEN_READS_IN_MILLIS)); + + List streamConfigs = new ArrayList<>(); + streamConfigs.add(kinesisStreamConfig); + when(kinesisSourceConfig.getStreams()).thenReturn(streamConfigs); + when(kinesisSourceConfig.getNumberOfRecordsToAccumulate()).thenReturn(NUMBER_OF_RECORDS_TO_ACCUMULATE); + when(kinesisSourceConfig.getMaxInitializationAttempts()).thenReturn(DEFAULT_INITIALIZATION_ATTEMPTS); + + PluginModel pluginModel = mock(PluginModel.class); + when(pluginModel.getPluginName()).thenReturn(codec_plugin_name); + when(pluginModel.getPluginSettings()).thenReturn(Collections.emptyMap()); + when(kinesisSourceConfig.getCodec()).thenReturn(pluginModel); + + pluginFactory = mock(PluginFactory.class); + InputCodec codec = mock(InputCodec.class); + when(pluginFactory.loadPlugin(eq(InputCodec.class), any())).thenReturn(codec); + + when(kinesisClientFactory.buildDynamoDBClient(kinesisLeaseCoordinationTableConfig.getAwsRegion())).thenReturn(dynamoDbClient); + when(kinesisClientFactory.buildKinesisAsyncClient(awsAuthenticationConfig.getAwsRegion())).thenReturn(kinesisClient); + when(kinesisClientFactory.buildCloudWatchAsyncClient(kinesisLeaseCoordinationTableConfig.getAwsRegion())).thenReturn(cloudWatchClient); + when(kinesisClient.serviceClientConfiguration()).thenReturn(KinesisServiceClientConfiguration.builder().region(Region.US_EAST_1).build()); + when(scheduler.startGracefulShutdown()).thenReturn(CompletableFuture.completedFuture(true)); + when(pipelineDescription.getPipelineName()).thenReturn(PIPELINE_NAME); + when(workerIdentifierGenerator.generate()).thenReturn(UUID.randomUUID().toString()); + } + + public KinesisService createObjectUnderTest() { + return new KinesisService(kinesisSourceConfig, kinesisClientFactory, pluginMetrics, pluginFactory, + pipelineDescription, acknowledgementSetManager, kinesisLeaseConfigSupplier, workerIdentifierGenerator); + } + + @Test + void testServiceStart() { + KinesisService kinesisService = createObjectUnderTest(); + kinesisService.start(buffer); + assertNotNull(kinesisService.getScheduler(buffer)); + verify(workerIdentifierGenerator, times(1)).generate(); + } + + @Test + void testServiceThrowsWhenLeaseConfigIsInvalid() { + when(kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig()).thenReturn(Optional.empty()); + assertThrows(IllegalStateException.class, () -> new KinesisService(kinesisSourceConfig, kinesisClientFactory, pluginMetrics, pluginFactory, + pipelineDescription, acknowledgementSetManager, kinesisLeaseConfigSupplier, workerIdentifierGenerator)); + } + + @Test + void testCreateScheduler() { + KinesisService kinesisService = new KinesisService(kinesisSourceConfig, kinesisClientFactory, pluginMetrics, pluginFactory, + pipelineDescription, acknowledgementSetManager, kinesisLeaseConfigSupplier, workerIdentifierGenerator); + Scheduler schedulerObjectUnderTest = kinesisService.createScheduler(buffer); + + assertNotNull(schedulerObjectUnderTest); + assertNotNull(schedulerObjectUnderTest.checkpointConfig()); + assertNotNull(schedulerObjectUnderTest.leaseManagementConfig()); + assertSame(schedulerObjectUnderTest.leaseManagementConfig().initialPositionInStream().getInitialPositionInStream(), InitialPositionInStream.TRIM_HORIZON); + assertNotNull(schedulerObjectUnderTest.lifecycleConfig()); + assertNotNull(schedulerObjectUnderTest.metricsConfig()); + assertSame(schedulerObjectUnderTest.metricsConfig().metricsLevel(), MetricsLevel.DETAILED); + assertNotNull(schedulerObjectUnderTest.processorConfig()); + assertNotNull(schedulerObjectUnderTest.retrievalConfig()); + verify(workerIdentifierGenerator, times(1)).generate(); + } + + @Test + void testCreateSchedulerWithPollingStrategy() { + when(kinesisSourceConfig.getConsumerStrategy()).thenReturn(ConsumerStrategy.POLLING); + KinesisService kinesisService = new KinesisService(kinesisSourceConfig, kinesisClientFactory, pluginMetrics, pluginFactory, + pipelineDescription, acknowledgementSetManager, kinesisLeaseConfigSupplier, workerIdentifierGenerator); + Scheduler schedulerObjectUnderTest = kinesisService.createScheduler(buffer); + + assertNotNull(schedulerObjectUnderTest); + assertNotNull(schedulerObjectUnderTest.checkpointConfig()); + assertNotNull(schedulerObjectUnderTest.leaseManagementConfig()); + assertSame(schedulerObjectUnderTest.leaseManagementConfig().initialPositionInStream().getInitialPositionInStream(), InitialPositionInStream.TRIM_HORIZON); + assertNotNull(schedulerObjectUnderTest.lifecycleConfig()); + assertNotNull(schedulerObjectUnderTest.metricsConfig()); + assertSame(schedulerObjectUnderTest.metricsConfig().metricsLevel(), MetricsLevel.DETAILED); + assertNotNull(schedulerObjectUnderTest.processorConfig()); + assertNotNull(schedulerObjectUnderTest.retrievalConfig()); + verify(workerIdentifierGenerator, times(1)).generate(); + } + + + @Test + void testServiceStartNullBufferThrows() { + KinesisService kinesisService = createObjectUnderTest(); + assertThrows(IllegalStateException.class, () -> kinesisService.start(null)); + + verify(scheduler, times(0)).run(); + } + + @Test + void testServiceStartNullStreams() { + when(kinesisSourceConfig.getStreams()).thenReturn(null); + + KinesisService kinesisService = createObjectUnderTest(); + assertThrows(InvalidPluginConfigurationException.class, () -> kinesisService.start(buffer)); + + verify(scheduler, times(0)).run(); + } + + @Test + void testServiceStartEmptyStreams() { + when(kinesisSourceConfig.getStreams()).thenReturn(new ArrayList<>()); + + KinesisService kinesisService = createObjectUnderTest(); + assertThrows(InvalidPluginConfigurationException.class, () -> kinesisService.start(buffer)); + + verify(scheduler, times(0)).run(); + } + + @Test + public void testShutdownGraceful() { + KinesisService kinesisService = createObjectUnderTest(); + kinesisService.setScheduler(scheduler); + kinesisService.shutDown(); + + verify(scheduler).startGracefulShutdown(); + verify(scheduler, times(0)).shutdown(); + } + + @Test + public void testShutdownGracefulThrowInterruptedException() { + KinesisService kinesisService = createObjectUnderTest(); + + when(scheduler.startGracefulShutdown()).thenReturn(CompletableFuture.failedFuture(new InterruptedException())); + kinesisService.setScheduler(scheduler); + assertDoesNotThrow(kinesisService::shutDown); + + verify(scheduler).startGracefulShutdown(); + verify(scheduler, times(1)).shutdown(); + } + + @Test + public void testShutdownGracefulThrowTimeoutException() { + KinesisService kinesisService = createObjectUnderTest(); + kinesisService.setScheduler(scheduler); + when(scheduler.startGracefulShutdown()).thenReturn(CompletableFuture.failedFuture(new TimeoutException())); + assertDoesNotThrow(kinesisService::shutDown); + + verify(scheduler).startGracefulShutdown(); + verify(scheduler, times(1)).shutdown(); + } + + @Test + public void testShutdownGracefulThrowExecutionException() { + KinesisService kinesisService = createObjectUnderTest(); + kinesisService.setScheduler(scheduler); + when(scheduler.startGracefulShutdown()).thenReturn(CompletableFuture.failedFuture(new ExecutionException(new Throwable()))); + assertDoesNotThrow(kinesisService::shutDown); + + verify(scheduler).startGracefulShutdown(); + verify(scheduler, times(1)).shutdown(); + } + + @Test + public void testShutdownExecutorServiceInterruptedException() { + when(scheduler.startGracefulShutdown()).thenReturn(CompletableFuture.failedFuture(new InterruptedException())); + + KinesisService kinesisService = createObjectUnderTest(); + kinesisService.setScheduler(scheduler); + kinesisService.shutDown(); + + verify(scheduler).startGracefulShutdown(); + verify(scheduler).shutdown(); + } + +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSourceTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSourceTest.java new file mode 100644 index 0000000000..fad335dd63 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/KinesisSourceTest.java @@ -0,0 +1,190 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; +import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfig; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseConfigSupplier; +import org.opensearch.dataprepper.plugins.kinesis.extension.KinesisLeaseCoordinationTableConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.AwsAuthenticationConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.regions.Region; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class KinesisSourceTest { + private final String PIPELINE_NAME = "kinesis-pipeline-test"; + private final String streamId = "stream-1"; + private static final String codec_plugin_name = "json"; + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private PluginFactory pluginFactory; + + @Mock + private KinesisSourceConfig kinesisSourceConfig; + + @Mock + private AwsAuthenticationConfig awsAuthenticationConfig; + + private KinesisSource source; + + @Mock + private AcknowledgementSetManager acknowledgementSetManager; + + @Mock + private AwsCredentialsSupplier awsCredentialsSupplier; + + @Mock + private PipelineDescription pipelineDescription; + + @Mock KinesisService kinesisService; + + @Mock + KinesisLeaseConfigSupplier kinesisLeaseConfigSupplier; + + @Mock + KinesisLeaseConfig kinesisLeaseConfig; + + @Mock + KinesisLeaseCoordinationTableConfig kinesisLeaseCoordinationTableConfig; + + @BeforeEach + void setup() { + pluginMetrics = mock(PluginMetrics.class); + pluginFactory = mock(PluginFactory.class); + kinesisSourceConfig = mock(KinesisSourceConfig.class); + this.pipelineDescription = mock(PipelineDescription.class); + awsCredentialsSupplier = mock(AwsCredentialsSupplier.class); + awsAuthenticationConfig = mock(AwsAuthenticationConfig.class); + acknowledgementSetManager = mock(AcknowledgementSetManager.class); + kinesisService = mock(KinesisService.class); + + PluginModel pluginModel = mock(PluginModel.class); + when(pluginModel.getPluginName()).thenReturn(codec_plugin_name); + when(pluginModel.getPluginSettings()).thenReturn(Collections.emptyMap()); + when(kinesisSourceConfig.getCodec()).thenReturn(pluginModel); + + pluginFactory = mock(PluginFactory.class); + InputCodec codec = mock(InputCodec.class); + when(pluginFactory.loadPlugin(eq(InputCodec.class), any())).thenReturn(codec); + + kinesisLeaseConfigSupplier = mock(KinesisLeaseConfigSupplier.class); + kinesisLeaseConfig = mock(KinesisLeaseConfig.class); + kinesisLeaseCoordinationTableConfig = mock(KinesisLeaseCoordinationTableConfig.class); + when(kinesisLeaseConfig.getLeaseCoordinationTable()).thenReturn(kinesisLeaseCoordinationTableConfig); + when(kinesisLeaseCoordinationTableConfig.getTableName()).thenReturn("table-name"); + when(kinesisLeaseCoordinationTableConfig.getRegion()).thenReturn("us-east-1"); + when(kinesisLeaseCoordinationTableConfig.getAwsRegion()).thenReturn(Region.US_EAST_1); + when(kinesisLeaseConfigSupplier.getKinesisExtensionLeaseConfig()).thenReturn(Optional.ofNullable(kinesisLeaseConfig)); + when(awsAuthenticationConfig.getAwsRegion()).thenReturn(Region.US_EAST_1); + when(awsAuthenticationConfig.getAwsStsRoleArn()).thenReturn(UUID.randomUUID().toString()); + when(awsAuthenticationConfig.getAwsStsExternalId()).thenReturn(UUID.randomUUID().toString()); + final Map stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + AwsCredentialsProvider defaultCredentialsProvider = mock(AwsCredentialsProvider.class); + when(awsCredentialsSupplier.getProvider(AwsCredentialsOptions.defaultOptions())).thenReturn(defaultCredentialsProvider); + when(awsAuthenticationConfig.getAwsStsHeaderOverrides()).thenReturn(stsHeaderOverrides); + when(kinesisSourceConfig.getAwsAuthenticationConfig()).thenReturn(awsAuthenticationConfig); + when(pipelineDescription.getPipelineName()).thenReturn(PIPELINE_NAME); + } + + public KinesisSource createObjectUnderTest() { + return new KinesisSource(kinesisSourceConfig, pluginMetrics, pluginFactory, pipelineDescription, awsCredentialsSupplier, acknowledgementSetManager, kinesisLeaseConfigSupplier); + } + + @Test + public void testSourceWithoutAcknowledgements() { + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(false); + source = createObjectUnderTest(); + assertThat(source.areAcknowledgementsEnabled(), equalTo(false)); + } + + @Test + public void testSourceWithAcknowledgements() { + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(true); + source = createObjectUnderTest(); + assertThat(source.areAcknowledgementsEnabled(), equalTo(true)); + } + + @Test + public void testSourceStart() { + + source = createObjectUnderTest(); + + Buffer> buffer = mock(Buffer.class); + when(kinesisSourceConfig.getNumberOfRecordsToAccumulate()).thenReturn(100); + KinesisStreamConfig kinesisStreamConfig = mock(KinesisStreamConfig.class); + when(kinesisStreamConfig.getName()).thenReturn(streamId); + when(kinesisSourceConfig.getStreams()).thenReturn(List.of(kinesisStreamConfig)); + source.setKinesisService(kinesisService); + + source.start(buffer); + + verify(kinesisService, times(1)).start(any(Buffer.class)); + + } + + @Test + public void testSourceStartBufferNull() { + + source = createObjectUnderTest(); + + assertThrows(IllegalStateException.class, () -> source.start(null)); + + verify(kinesisService, times(0)).start(any(Buffer.class)); + + } + + @Test + public void testSourceStop() { + + source = createObjectUnderTest(); + + source.setKinesisService(kinesisService); + + source.stop(); + + verify(kinesisService, times(1)).shutDown(); + + } + +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/AwsAuthenticationConfigTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/AwsAuthenticationConfigTest.java new file mode 100644 index 0000000000..499711c4a9 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/AwsAuthenticationConfigTest.java @@ -0,0 +1,90 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import software.amazon.awssdk.regions.Region; + +import java.util.Collections; +import java.util.Map; +import java.util.UUID; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.nullValue; + +public class AwsAuthenticationConfigTest { + private ObjectMapper objectMapper = new ObjectMapper(); + + @ParameterizedTest + @ValueSource(strings = {"us-east-1", "us-west-2", "eu-central-1"}) + void getAwsRegionReturnsRegion(final String regionString) { + final Region expectedRegionObject = Region.of(regionString); + final Map jsonMap = Map.of("region", regionString); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsRegion(), equalTo(expectedRegionObject)); + } + + @Test + void getAwsRegionReturnsNullWhenRegionIsNull() { + final Map jsonMap = Collections.emptyMap(); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsRegion(), nullValue()); + } + + @Test + void getAwsStsRoleArnReturnsValueFromDeserializedJSON() { + final String stsRoleArn = UUID.randomUUID().toString(); + final Map jsonMap = Map.of("sts_role_arn", stsRoleArn); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsStsRoleArn(), equalTo(stsRoleArn)); + } + + @Test + void getAwsStsRoleArnReturnsNullIfNotInJSON() { + final Map jsonMap = Collections.emptyMap(); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsStsRoleArn(), nullValue()); + } + + @Test + void getAwsStsExternalIdReturnsValueFromDeserializedJSON() { + final String stsExternalId = UUID.randomUUID().toString(); + final Map jsonMap = Map.of("sts_external_id", stsExternalId); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsStsExternalId(), equalTo(stsExternalId)); + } + + @Test + void getAwsStsExternalIdReturnsNullIfNotInJSON() { + final Map jsonMap = Collections.emptyMap(); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsStsExternalId(), nullValue()); + } + + @Test + void getAwsStsHeaderOverridesReturnsValueFromDeserializedJSON() { + final Map stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + final Map jsonMap = Map.of("sts_header_overrides", stsHeaderOverrides); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsStsHeaderOverrides(), equalTo(stsHeaderOverrides)); + } + + @Test + void getAwsStsHeaderOverridesReturnsNullIfNotInJSON() { + final Map jsonMap = Collections.emptyMap(); + final AwsAuthenticationConfig objectUnderTest = objectMapper.convertValue(jsonMap, AwsAuthenticationConfig.class); + assertThat(objectUnderTest.getAwsStsHeaderOverrides(), nullValue()); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/InitialPositionInStreamConfigTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/InitialPositionInStreamConfigTest.java new file mode 100644 index 0000000000..2e1b638342 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/InitialPositionInStreamConfigTest.java @@ -0,0 +1,38 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import org.junit.jupiter.api.Test; +import software.amazon.kinesis.common.InitialPositionInStream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class InitialPositionInStreamConfigTest { + + @Test + void testInitialPositionGetByNameLATEST() { + final InitialPositionInStreamConfig initialPositionInStreamConfig = InitialPositionInStreamConfig.fromPositionValue("latest"); + assertEquals(initialPositionInStreamConfig, InitialPositionInStreamConfig.LATEST); + assertEquals(initialPositionInStreamConfig.toString(), "latest"); + assertEquals(initialPositionInStreamConfig.getPosition(), "latest"); + assertEquals(initialPositionInStreamConfig.getPositionInStream(), InitialPositionInStream.LATEST); + } + + @Test + void testInitialPositionGetByNameEarliest() { + final InitialPositionInStreamConfig initialPositionInStreamConfig = InitialPositionInStreamConfig.fromPositionValue("earliest"); + assertEquals(initialPositionInStreamConfig, InitialPositionInStreamConfig.EARLIEST); + assertEquals(initialPositionInStreamConfig.toString(), "earliest"); + assertEquals(initialPositionInStreamConfig.getPosition(), "earliest"); + assertEquals(initialPositionInStreamConfig.getPositionInStream(), InitialPositionInStream.TRIM_HORIZON); + } + +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisSourceConfigTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisSourceConfigTest.java new file mode 100644 index 0000000000..2059e8b12f --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisSourceConfigTest.java @@ -0,0 +1,169 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.opensearch.dataprepper.pipeline.parser.DataPrepperDurationDeserializer; +import org.opensearch.dataprepper.plugins.codec.CompressionOption; +import software.amazon.awssdk.regions.Region; +import software.amazon.kinesis.common.InitialPositionInStream; + +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.time.Duration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class KinesisSourceConfigTest { + private static final String PIPELINE_CONFIG_WITH_ACKS_ENABLED = "pipeline_with_acks_enabled.yaml"; + private static final String PIPELINE_CONFIG_WITH_POLLING_CONFIG_ENABLED = "pipeline_with_polling_config_enabled.yaml"; + private static final String PIPELINE_CONFIG_CHECKPOINT_ENABLED = "pipeline_with_checkpoint_enabled.yaml"; + private static final Duration MINIMAL_CHECKPOINT_INTERVAL = Duration.ofMillis(2 * 60 * 1000); // 2 minute + + KinesisSourceConfig kinesisSourceConfig; + + ObjectMapper objectMapper; + + @BeforeEach + void setUp(TestInfo testInfo) throws IOException { + String fileName = testInfo.getTags().stream().findFirst().orElse(""); + final File configurationFile = new File(getClass().getClassLoader().getResource(fileName).getFile()); + objectMapper = new ObjectMapper(new YAMLFactory()); + SimpleModule simpleModule = new SimpleModule(); + simpleModule.addDeserializer(Duration.class, new DataPrepperDurationDeserializer()); + objectMapper.registerModule(new JavaTimeModule()); + objectMapper.registerModule(simpleModule); + + final Map pipelineConfig = objectMapper.readValue(configurationFile, Map.class); + final Map sourceMap = (Map) pipelineConfig.get("source"); + final Map kinesisConfigMap = (Map) sourceMap.get("kinesis"); + String json = objectMapper.writeValueAsString(kinesisConfigMap); + final Reader reader = new StringReader(json); + kinesisSourceConfig = objectMapper.readValue(reader, KinesisSourceConfig.class); + + } + + @Test + @Tag(PIPELINE_CONFIG_WITH_ACKS_ENABLED) + void testSourceConfig() { + + assertThat(kinesisSourceConfig, notNullValue()); + assertEquals(KinesisSourceConfig.DEFAULT_NUMBER_OF_RECORDS_TO_ACCUMULATE, kinesisSourceConfig.getNumberOfRecordsToAccumulate()); + assertEquals(KinesisSourceConfig.DEFAULT_TIME_OUT_IN_MILLIS, kinesisSourceConfig.getBufferTimeout()); + assertEquals(KinesisSourceConfig.DEFAULT_MAX_INITIALIZATION_ATTEMPTS, kinesisSourceConfig.getMaxInitializationAttempts()); + assertEquals(KinesisSourceConfig.DEFAULT_INITIALIZATION_BACKOFF_TIME, kinesisSourceConfig.getInitializationBackoffTime()); + assertTrue(kinesisSourceConfig.isAcknowledgments()); + assertEquals(KinesisSourceConfig.DEFAULT_SHARD_ACKNOWLEDGEMENT_TIMEOUT, kinesisSourceConfig.getShardAcknowledgmentTimeout()); + assertThat(kinesisSourceConfig.getAwsAuthenticationConfig(), notNullValue()); + assertEquals(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsRegion(), Region.US_EAST_1); + assertEquals(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsRoleArn(), "arn:aws:iam::123456789012:role/OSI-PipelineRole"); + assertNull(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsExternalId()); + assertNull(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsHeaderOverrides()); + + List streamConfigs = kinesisSourceConfig.getStreams(); + assertNotNull(kinesisSourceConfig.getCodec()); + assertEquals(kinesisSourceConfig.getConsumerStrategy(), ConsumerStrategy.ENHANCED_FAN_OUT); + assertNull(kinesisSourceConfig.getPollingConfig()); + + assertEquals(streamConfigs.size(), 3); + + for (KinesisStreamConfig kinesisStreamConfig: streamConfigs) { + assertTrue(kinesisStreamConfig.getName().contains("stream")); + assertEquals(kinesisStreamConfig.getInitialPosition(), InitialPositionInStream.LATEST); + assertEquals(kinesisStreamConfig.getCheckPointInterval(), MINIMAL_CHECKPOINT_INTERVAL); + } + } + + @Test + @Tag(PIPELINE_CONFIG_WITH_POLLING_CONFIG_ENABLED) + void testSourceConfigWithStreamCodec() { + + assertThat(kinesisSourceConfig, notNullValue()); + assertEquals(KinesisSourceConfig.DEFAULT_NUMBER_OF_RECORDS_TO_ACCUMULATE, kinesisSourceConfig.getNumberOfRecordsToAccumulate()); + assertEquals(KinesisSourceConfig.DEFAULT_TIME_OUT_IN_MILLIS, kinesisSourceConfig.getBufferTimeout()); + assertEquals(KinesisSourceConfig.DEFAULT_MAX_INITIALIZATION_ATTEMPTS, kinesisSourceConfig.getMaxInitializationAttempts()); + assertEquals(KinesisSourceConfig.DEFAULT_INITIALIZATION_BACKOFF_TIME, kinesisSourceConfig.getInitializationBackoffTime()); + assertFalse(kinesisSourceConfig.isAcknowledgments()); + assertEquals(KinesisSourceConfig.DEFAULT_SHARD_ACKNOWLEDGEMENT_TIMEOUT, kinesisSourceConfig.getShardAcknowledgmentTimeout()); + assertThat(kinesisSourceConfig.getAwsAuthenticationConfig(), notNullValue()); + assertEquals(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsRegion(), Region.US_EAST_1); + assertEquals(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsRoleArn(), "arn:aws:iam::123456789012:role/OSI-PipelineRole"); + assertNull(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsExternalId()); + assertNull(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsHeaderOverrides()); + assertNotNull(kinesisSourceConfig.getCodec()); + List streamConfigs = kinesisSourceConfig.getStreams(); + assertEquals(kinesisSourceConfig.getConsumerStrategy(), ConsumerStrategy.POLLING); + assertNotNull(kinesisSourceConfig.getPollingConfig()); + assertEquals(kinesisSourceConfig.getPollingConfig().getMaxPollingRecords(), 10); + assertEquals(kinesisSourceConfig.getPollingConfig().getIdleTimeBetweenReads(), Duration.ofSeconds(10)); + + assertEquals(streamConfigs.size(), 3); + + for (KinesisStreamConfig kinesisStreamConfig: streamConfigs) { + assertTrue(kinesisStreamConfig.getName().contains("stream")); + assertEquals(kinesisStreamConfig.getInitialPosition(), InitialPositionInStream.LATEST); + assertEquals(kinesisStreamConfig.getCheckPointInterval(), MINIMAL_CHECKPOINT_INTERVAL); + } + } + + @Test + @Tag(PIPELINE_CONFIG_CHECKPOINT_ENABLED) + void testSourceConfigWithInitialPosition() { + + assertThat(kinesisSourceConfig, notNullValue()); + assertEquals(KinesisSourceConfig.DEFAULT_NUMBER_OF_RECORDS_TO_ACCUMULATE, kinesisSourceConfig.getNumberOfRecordsToAccumulate()); + assertEquals(KinesisSourceConfig.DEFAULT_TIME_OUT_IN_MILLIS, kinesisSourceConfig.getBufferTimeout()); + assertEquals(KinesisSourceConfig.DEFAULT_MAX_INITIALIZATION_ATTEMPTS, kinesisSourceConfig.getMaxInitializationAttempts()); + assertEquals(KinesisSourceConfig.DEFAULT_INITIALIZATION_BACKOFF_TIME, kinesisSourceConfig.getInitializationBackoffTime()); + assertFalse(kinesisSourceConfig.isAcknowledgments()); + assertEquals(KinesisSourceConfig.DEFAULT_SHARD_ACKNOWLEDGEMENT_TIMEOUT, kinesisSourceConfig.getShardAcknowledgmentTimeout()); + assertThat(kinesisSourceConfig.getAwsAuthenticationConfig(), notNullValue()); + assertEquals(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsRegion(), Region.US_EAST_1); + assertEquals(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsRoleArn(), "arn:aws:iam::123456789012:role/OSI-PipelineRole"); + assertNull(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsExternalId()); + assertNull(kinesisSourceConfig.getAwsAuthenticationConfig().getAwsStsHeaderOverrides()); + assertNotNull(kinesisSourceConfig.getCodec()); + List streamConfigs = kinesisSourceConfig.getStreams(); + assertEquals(kinesisSourceConfig.getConsumerStrategy(), ConsumerStrategy.ENHANCED_FAN_OUT); + + Map expectedCheckpointIntervals = new HashMap<>(); + expectedCheckpointIntervals.put("stream-1", Duration.ofSeconds(20)); + expectedCheckpointIntervals.put("stream-2", Duration.ofMinutes(15)); + expectedCheckpointIntervals.put("stream-3", Duration.ofHours(2)); + + assertEquals(streamConfigs.size(), 3); + + for (KinesisStreamConfig kinesisStreamConfig: streamConfigs) { + assertTrue(kinesisStreamConfig.getName().contains("stream")); + assertEquals(kinesisStreamConfig.getInitialPosition(), InitialPositionInStream.TRIM_HORIZON); + assertEquals(kinesisStreamConfig.getCheckPointInterval(), expectedCheckpointIntervals.get(kinesisStreamConfig.getName())); + assertEquals(kinesisStreamConfig.getCompression(), CompressionOption.GZIP); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamPollingConfigTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamPollingConfigTest.java new file mode 100644 index 0000000000..02ac1960ed --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/configuration/KinesisStreamPollingConfigTest.java @@ -0,0 +1,30 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.configuration; + +import org.junit.jupiter.api.Test; + +import java.time.Duration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class KinesisStreamPollingConfigTest { + private static final int DEFAULT_MAX_RECORDS = 10000; + private static final int IDLE_TIME_BETWEEN_READS_IN_MILLIS = 250; + + @Test + void testConfig() { + KinesisStreamPollingConfig kinesisStreamPollingConfig = new KinesisStreamPollingConfig(); + assertEquals(kinesisStreamPollingConfig.getMaxPollingRecords(), DEFAULT_MAX_RECORDS); + assertEquals(kinesisStreamPollingConfig.getIdleTimeBetweenReads(), Duration.ofMillis(IDLE_TIME_BETWEEN_READS_IN_MILLIS)); + } + +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/KinesisRecordConverterTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/KinesisRecordConverterTest.java new file mode 100644 index 0000000000..95ecc10d41 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/converter/KinesisRecordConverterTest.java @@ -0,0 +1,121 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.converter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.event.TestEventFactory; +import org.opensearch.dataprepper.model.codec.DecompressionEngine; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.codec.CompressionOption; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonInputCodec; +import org.opensearch.dataprepper.plugins.codec.json.NdjsonInputConfig; +import software.amazon.kinesis.retrieval.KinesisClientRecord; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.UUID; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class KinesisRecordConverterTest { + private static final String streamId = "stream-1"; + + @Test + void testRecordConverter() throws IOException { + InputCodec codec = mock(InputCodec.class); + KinesisRecordConverter kinesisRecordConverter = new KinesisRecordConverter(codec); + DecompressionEngine decompressionEngine = CompressionOption.NONE.getDecompressionEngine(); + doNothing().when(codec).parse(any(InputStream.class), any(Consumer.class)); + + String sample_record_data = "sample record data"; + KinesisClientRecord kinesisClientRecord = KinesisClientRecord.builder() + .data(ByteBuffer.wrap(sample_record_data.getBytes())) + .build(); + + kinesisRecordConverter.convert(decompressionEngine, List.of(kinesisClientRecord), streamId); + verify(codec, times(1)).parse(any(InputStream.class), any(Consumer.class)); + } + + @Test + public void testRecordConverterWithNdJsonInputCodec() throws IOException { + + ObjectMapper objectMapper = new ObjectMapper(); + + int numRecords = 10; + final List> jsonObjects = IntStream.range(0, numRecords) + .mapToObj(i -> generateJson()) + .collect(Collectors.toList()); + + final StringWriter writer = new StringWriter(); + + for (final Map jsonObject : jsonObjects) { + writer.append(objectMapper.writeValueAsString(jsonObject)); + writer.append(System.lineSeparator()); + } + + KinesisRecordConverter kinesisRecordConverter = new KinesisRecordConverter( + new NdjsonInputCodec(new NdjsonInputConfig(), TestEventFactory.getTestEventFactory())); + + final String partitionKey = UUID.randomUUID().toString(); + final String sequenceNumber = UUID.randomUUID().toString(); + final Random random = new Random(); + final long subsequenceNumber = random.nextLong(); + + KinesisClientRecord kinesisClientRecord = KinesisClientRecord.builder() + .data(ByteBuffer.wrap(writer.toString().getBytes())) + .sequenceNumber(sequenceNumber) + .subSequenceNumber(subsequenceNumber) + .partitionKey(partitionKey) + .build(); + DecompressionEngine decompressionEngine = mock(DecompressionEngine.class); + InputStream inputStream = new ByteArrayInputStream(writer.toString().getBytes()); + when(decompressionEngine.createInputStream(any(InputStream.class))).thenReturn(inputStream); + + List> events = kinesisRecordConverter.convert(decompressionEngine, List.of(kinesisClientRecord), streamId); + + assertEquals(events.size(), numRecords); + events.forEach(eventRecord -> { + assertEquals(eventRecord.getData().getMetadata().getAttribute(MetadataKeyAttributes.KINESIS_PARTITION_KEY_METADATA_ATTRIBUTE), partitionKey); + assertEquals(eventRecord.getData().getMetadata().getAttribute(MetadataKeyAttributes.KINESIS_SEQUENCE_NUMBER_METADATA_ATTRIBUTE), sequenceNumber); + assertEquals(eventRecord.getData().getMetadata().getAttribute(MetadataKeyAttributes.KINESIS_SUB_SEQUENCE_NUMBER_METADATA_ATTRIBUTE), subsequenceNumber); + }); + } + + private static Map generateJson() { + final Map jsonObject = new LinkedHashMap<>(); + for (int i = 0; i < 1; i++) { + jsonObject.put(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + } + jsonObject.put(UUID.randomUUID().toString(), Arrays.asList(UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString())); + + return jsonObject; + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerRecordTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerRecordTest.java new file mode 100644 index 0000000000..a2cf8fecaf --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerRecordTest.java @@ -0,0 +1,64 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import org.junit.jupiter.api.Test; +import software.amazon.kinesis.processor.RecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.Mockito.mock; + +public class KinesisCheckpointerRecordTest { + private String shardId = "shardId-123"; + private String testConcurrencyToken = "testToken"; + + @Test + public void validateTwoRecords() { + + KinesisCheckpointerRecord kinesisCheckpointerRecord1 = KinesisCheckpointerRecord.builder() + .extendedSequenceNumber(ExtendedSequenceNumber.LATEST) + .readyToCheckpoint(false) + .build(); + KinesisCheckpointerRecord kinesisCheckpointerRecord2 = KinesisCheckpointerRecord.builder() + .extendedSequenceNumber(ExtendedSequenceNumber.LATEST) + .readyToCheckpoint(false) + .build(); + + assertEquals(kinesisCheckpointerRecord1.isReadyToCheckpoint(), kinesisCheckpointerRecord2.isReadyToCheckpoint()); + assertEquals(kinesisCheckpointerRecord1.getCheckpointer(), kinesisCheckpointerRecord2.getCheckpointer()); + assertEquals(kinesisCheckpointerRecord1.getExtendedSequenceNumber(), kinesisCheckpointerRecord2.getExtendedSequenceNumber()); + } + + @Test + public void validateTwoRecordsWithSetterMethods() { + RecordProcessorCheckpointer recordProcessorCheckpointer = mock(RecordProcessorCheckpointer.class); + KinesisCheckpointerRecord kinesisCheckpointerRecord1 = KinesisCheckpointerRecord.builder().build(); + kinesisCheckpointerRecord1.setCheckpointer(recordProcessorCheckpointer); + kinesisCheckpointerRecord1.setExtendedSequenceNumber(ExtendedSequenceNumber.LATEST); + kinesisCheckpointerRecord1.setReadyToCheckpoint(false); + + KinesisCheckpointerRecord kinesisCheckpointerRecord2 = KinesisCheckpointerRecord.builder().build(); + kinesisCheckpointerRecord2.setCheckpointer(recordProcessorCheckpointer); + kinesisCheckpointerRecord2.setExtendedSequenceNumber(ExtendedSequenceNumber.LATEST); + kinesisCheckpointerRecord2.setReadyToCheckpoint(false); + + assertEquals(kinesisCheckpointerRecord1.isReadyToCheckpoint(), kinesisCheckpointerRecord2.isReadyToCheckpoint()); + assertEquals(kinesisCheckpointerRecord1.getCheckpointer(), kinesisCheckpointerRecord2.getCheckpointer()); + assertEquals(kinesisCheckpointerRecord1.getExtendedSequenceNumber(), kinesisCheckpointerRecord2.getExtendedSequenceNumber()); + } + + @Test + public void testInvalidRecords() { + KinesisCheckpointerRecord kinesisCheckpointerRecord = KinesisCheckpointerRecord.builder().build(); + assertNotNull(kinesisCheckpointerRecord); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerTrackerTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerTrackerTest.java new file mode 100644 index 0000000000..fe0ab06877 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisCheckpointerTrackerTest.java @@ -0,0 +1,98 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import org.junit.jupiter.api.Test; +import software.amazon.kinesis.processor.RecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.Random; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; + +public class KinesisCheckpointerTrackerTest { + + private Random random = new Random(); + + @Test + void testCheckPointerAddAndGet() { + KinesisCheckpointerTracker kinesisCheckpointerTracker = new KinesisCheckpointerTracker(); + + List extendedSequenceNumberList = new ArrayList<>(); + int numRecords = 10; + for (int i=0; i checkpointRecord = kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord(); + assertTrue(checkpointRecord.isEmpty()); + assertEquals(kinesisCheckpointerTracker.size(), numRecords); + + int idx = random.nextInt(numRecords); + ExtendedSequenceNumber extendedSequenceNumber1 = extendedSequenceNumberList.get(idx); + kinesisCheckpointerTracker.markSequenceNumberForCheckpoint(extendedSequenceNumber1); + + Optional firstcheckpointer = kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord(); + if (idx != 0) { + assertTrue(firstcheckpointer.isEmpty()); + assertEquals(kinesisCheckpointerTracker.size(), numRecords); + } else { + assertFalse(firstcheckpointer.isEmpty()); + assertEquals(kinesisCheckpointerTracker.size(), numRecords-1); + } + } + @Test + void testGetLastCheckpointerAndStoreIsEmpty() { + KinesisCheckpointerTracker kinesisCheckpointerTracker = new KinesisCheckpointerTracker(); + + List extendedSequenceNumberList = new ArrayList<>(); + int numRecords = 10; + for (int i=0; i checkpointer = kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord(); + assertTrue(checkpointer.isPresent()); + assertEquals(0, kinesisCheckpointerTracker.size()); + } + + @Test + public void testMarkCheckpointerReadyForCheckpoint() { + + KinesisCheckpointerTracker kinesisCheckpointerTracker = new KinesisCheckpointerTracker(); + + ExtendedSequenceNumber extendedSequenceNumber = mock(ExtendedSequenceNumber.class); + assertThrows(IllegalArgumentException.class, () -> kinesisCheckpointerTracker.markSequenceNumberForCheckpoint(extendedSequenceNumber)); + + Optional checkpointer = kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord(); + assertTrue(checkpointer.isEmpty()); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisRecordProcessorTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisRecordProcessorTest.java new file mode 100644 index 0000000000..e044676799 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisRecordProcessorTest.java @@ -0,0 +1,540 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import io.micrometer.core.instrument.Counter; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.opensearch.dataprepper.buffer.common.BufferAccumulator; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.codec.DecompressionEngine; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventMetadata; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.codec.CompressionOption; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.converter.KinesisRecordConverter; +import org.opensearch.dataprepper.plugins.kinesis.source.converter.MetadataKeyAttributes; +import software.amazon.kinesis.common.StreamIdentifier; +import software.amazon.kinesis.exceptions.InvalidStateException; +import software.amazon.kinesis.exceptions.ShutdownException; +import software.amazon.kinesis.exceptions.ThrottlingException; +import software.amazon.kinesis.lifecycle.events.InitializationInput; +import software.amazon.kinesis.lifecycle.events.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.events.ShardEndedInput; +import software.amazon.kinesis.lifecycle.events.ShutdownRequestedInput; +import software.amazon.kinesis.processor.RecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.KinesisClientRecord; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyDouble; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.ACKNOWLEDGEMENT_SET_FAILURES_METRIC_NAME; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.ACKNOWLEDGEMENT_SET_SUCCESS_METRIC_NAME; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_CHECKPOINT_FAILURES; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_RECORD_PROCESSED; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_RECORD_PROCESSING_ERRORS; +import static org.opensearch.dataprepper.plugins.kinesis.source.processor.KinesisRecordProcessor.KINESIS_STREAM_TAG_KEY; + +public class KinesisRecordProcessorTest { + private KinesisRecordProcessor kinesisRecordProcessor; + private static final String shardId = "123"; + private static final String streamId = "stream-1"; + private static final String codec_plugin_name = "json"; + private static final String sequence_number = "10001"; + private static final Long sub_sequence_number = 1L; + + private static final Duration CHECKPOINT_INTERVAL = Duration.ofMillis(1000); + private static final int NUMBER_OF_RECORDS_TO_ACCUMULATE = 10; + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private PluginFactory pluginFactory; + + @Mock + private KinesisSourceConfig kinesisSourceConfig; + + @Mock + private KinesisStreamConfig kinesisStreamConfig; + + @Mock + private InitializationInput initializationInput; + + @Mock + private ProcessRecordsInput processRecordsInput; + + @Mock + private RecordProcessorCheckpointer checkpointer; + + @Mock + StreamIdentifier streamIdentifier; + + @Mock + private AcknowledgementSetManager acknowledgementSetManager; + + @Mock + private AcknowledgementSet acknowledgementSet; + + @Mock + private Counter recordProcessed; + + @Mock + private Counter recordProcessingErrors; + + @Mock + private Counter checkpointFailures; + + @Mock + private Counter acknowledgementSetSuccesses; + + @Mock + private Counter acknowledgementSetFailures; + + @Mock + private InputCodec codec; + + @Mock + private BufferAccumulator> bufferAccumulator; + + @Mock + private KinesisRecordConverter kinesisRecordConverter; + + @Mock + private KinesisCheckpointerTracker kinesisCheckpointerTracker; + + @Mock + private DecompressionEngine decompressionEngine; + + @BeforeEach + public void setup() throws IOException { + MockitoAnnotations.initMocks(this); + pluginMetrics = mock(PluginMetrics.class); + pluginFactory = mock(PluginFactory.class); + acknowledgementSet = mock(AcknowledgementSet.class); + bufferAccumulator = mock(BufferAccumulator.class); + kinesisRecordConverter = mock(KinesisRecordConverter.class); + kinesisCheckpointerTracker = mock(KinesisCheckpointerTracker.class); + + when(initializationInput.shardId()).thenReturn(shardId); + when(streamIdentifier.streamName()).thenReturn(streamId); + when(kinesisStreamConfig.getName()).thenReturn(streamId); + when(kinesisStreamConfig.getCompression()).thenReturn(CompressionOption.NONE); + PluginModel pluginModel = mock(PluginModel.class); + when(pluginModel.getPluginName()).thenReturn(codec_plugin_name); + when(pluginModel.getPluginSettings()).thenReturn(Collections.emptyMap()); + when(kinesisSourceConfig.getCodec()).thenReturn(pluginModel); + + codec = mock(InputCodec.class); + when(pluginFactory.loadPlugin(eq(InputCodec.class), any())).thenReturn(codec); + when(kinesisStreamConfig.getCheckPointInterval()).thenReturn(CHECKPOINT_INTERVAL); + when(kinesisSourceConfig.getNumberOfRecordsToAccumulate()).thenReturn(NUMBER_OF_RECORDS_TO_ACCUMULATE); + when(kinesisSourceConfig.getStreams()).thenReturn(List.of(kinesisStreamConfig)); + when(processRecordsInput.checkpointer()).thenReturn(checkpointer); + when(pluginMetrics.counterWithTags(ACKNOWLEDGEMENT_SET_SUCCESS_METRIC_NAME, KINESIS_STREAM_TAG_KEY, + streamIdentifier.streamName())).thenReturn(acknowledgementSetSuccesses); + when(pluginMetrics.counterWithTags(ACKNOWLEDGEMENT_SET_FAILURES_METRIC_NAME, KINESIS_STREAM_TAG_KEY, + streamIdentifier.streamName())).thenReturn(acknowledgementSetFailures); + + InputStream inputStream = mock(InputStream.class); + when(decompressionEngine.createInputStream(any(InputStream.class))).thenReturn(inputStream); + CompressionOption compressionOption = mock(CompressionOption.class); + when(kinesisStreamConfig.getCompression()).thenReturn(compressionOption); + when(compressionOption.getDecompressionEngine()).thenReturn(decompressionEngine); + + recordProcessed = mock(Counter.class); + when(pluginMetrics.counterWithTags(KINESIS_RECORD_PROCESSED, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName())).thenReturn(recordProcessed); + + recordProcessingErrors = mock(Counter.class); + when(pluginMetrics.counterWithTags(KINESIS_RECORD_PROCESSING_ERRORS, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName())).thenReturn(recordProcessingErrors); + } + + @Test + void testProcessRecordsWithoutAcknowledgementsWithCheckpointApplied() + throws Exception { + List kinesisClientRecords = createInputKinesisClientRecords(); + when(processRecordsInput.records()).thenReturn(kinesisClientRecords); + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(false); + when(kinesisStreamConfig.getCheckPointInterval()).thenReturn(Duration.ofMillis(0)); + when(acknowledgementSetManager.create(any(), any(Duration.class))).thenReturn(acknowledgementSet); + + List> records = new ArrayList<>(); + Event event = JacksonEvent.fromMessage(UUID.randomUUID().toString()); + event.getMetadata().setAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE, streamId); + Record record = new Record<>(event); + records.add(record); + InputStream inputStream = mock(InputStream.class); + when(decompressionEngine.createInputStream(inputStream)).thenReturn(inputStream); + when(kinesisRecordConverter.convert(eq(decompressionEngine), eq(kinesisClientRecords), eq(streamId))).thenReturn(records); + + kinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + KinesisCheckpointerRecord kinesisCheckpointerRecord = mock(KinesisCheckpointerRecord.class); + ExtendedSequenceNumber extendedSequenceNumber = mock(ExtendedSequenceNumber.class); + when(extendedSequenceNumber.sequenceNumber()).thenReturn(sequence_number); + when(extendedSequenceNumber.subSequenceNumber()).thenReturn(sub_sequence_number); + when(kinesisCheckpointerRecord.getExtendedSequenceNumber()).thenReturn(extendedSequenceNumber); + when(kinesisCheckpointerRecord.getCheckpointer()).thenReturn(checkpointer); + when(kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord()).thenReturn(Optional.of(kinesisCheckpointerRecord)); + kinesisRecordProcessor.initialize(initializationInput); + + kinesisRecordProcessor.processRecords(processRecordsInput); + + verify(checkpointer).checkpoint(eq(sequence_number), eq(sub_sequence_number)); + + final ArgumentCaptor> recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + + verify(bufferAccumulator).add(recordArgumentCaptor.capture()); + verify(bufferAccumulator).flush(); + + List> recordsCaptured = recordArgumentCaptor.getAllValues(); + assertEquals(recordsCaptured.size(), records.size()); + for (Record eventRecord: recordsCaptured) { + EventMetadata eventMetadata = eventRecord.getData().getMetadata(); + assertEquals(eventMetadata.getAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE), streamIdentifier.streamName()); + } + + verify(acknowledgementSetManager, times(0)).create(any(), any(Duration.class)); + verify(recordProcessed, times(1)).increment(anyDouble()); + } + + @Test + public void testProcessRecordsWithoutAcknowledgementsEnabled() + throws Exception { + List kinesisClientRecords = createInputKinesisClientRecords(); + when(processRecordsInput.records()).thenReturn(kinesisClientRecords); + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(false); + when(kinesisStreamConfig.getCheckPointInterval()).thenReturn(Duration.ofMillis(0)); + when(acknowledgementSetManager.create(any(), any(Duration.class))).thenReturn(acknowledgementSet); + + List> records = new ArrayList<>(); + Event event = JacksonEvent.fromMessage(UUID.randomUUID().toString()); + event.getMetadata().setAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE, streamId); + Record record = new Record<>(event); + records.add(record); + when(kinesisRecordConverter.convert(eq(decompressionEngine), eq(kinesisClientRecords), eq(streamId))).thenReturn(records); + + kinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + when(kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord()).thenReturn(Optional.empty()); + kinesisRecordProcessor.initialize(initializationInput); + + kinesisRecordProcessor.processRecords(processRecordsInput); + + verifyNoInteractions(checkpointer); + + final ArgumentCaptor> recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + + verify(bufferAccumulator).add(recordArgumentCaptor.capture()); + verify(bufferAccumulator).flush(); + + List> recordsCaptured = recordArgumentCaptor.getAllValues(); + assertEquals(recordsCaptured.size(), records.size()); + for (Record eventRecord: recordsCaptured) { + EventMetadata eventMetadata = eventRecord.getData().getMetadata(); + assertEquals(eventMetadata.getAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE), streamIdentifier.streamName()); + } + + verify(acknowledgementSetManager, times(0)).create(any(), any(Duration.class)); + verify(recordProcessed, times(1)).increment(anyDouble()); + } + + @Test + void testProcessRecordsWithAcknowledgementsEnabled() + throws Exception { + List kinesisClientRecords = createInputKinesisClientRecords(); + when(processRecordsInput.records()).thenReturn(kinesisClientRecords); + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(true); + when(kinesisStreamConfig.getCheckPointInterval()).thenReturn(Duration.ofMillis(0)); + AtomicReference numEventsAdded = new AtomicReference<>(0); + doAnswer(a -> { + numEventsAdded.getAndSet(numEventsAdded.get() + 1); + return null; + }).when(acknowledgementSet).add(any(Event.class)); + + doAnswer(invocation -> { + Consumer consumer = invocation.getArgument(0); + consumer.accept(true); + return acknowledgementSet; + }).when(acknowledgementSetManager).create(any(Consumer.class), any(Duration.class)); + + List> records = new ArrayList<>(); + Event event = JacksonEvent.fromMessage(UUID.randomUUID().toString()); + event.getMetadata().setAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE, streamId); + Record record = new Record<>(event); + records.add(record); + when(kinesisRecordConverter.convert(eq(decompressionEngine), eq(kinesisClientRecords), eq(streamId))).thenReturn(records); + + kinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + KinesisCheckpointerRecord kinesisCheckpointerRecord = mock(KinesisCheckpointerRecord.class); + ExtendedSequenceNumber extendedSequenceNumber = mock(ExtendedSequenceNumber.class); + when(extendedSequenceNumber.sequenceNumber()).thenReturn(sequence_number); + when(extendedSequenceNumber.subSequenceNumber()).thenReturn(sub_sequence_number); + when(kinesisCheckpointerRecord.getExtendedSequenceNumber()).thenReturn(extendedSequenceNumber); + when(kinesisCheckpointerRecord.getCheckpointer()).thenReturn(checkpointer); + when(kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord()).thenReturn(Optional.of(kinesisCheckpointerRecord)); + kinesisRecordProcessor.initialize(initializationInput); + + kinesisRecordProcessor.processRecords(processRecordsInput); + + final ArgumentCaptor> recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + + verify(bufferAccumulator).add(recordArgumentCaptor.capture()); + verify(bufferAccumulator).flush(); + + List> recordsCaptured = recordArgumentCaptor.getAllValues(); + assertEquals(recordsCaptured.size(), records.size()); + for (Record eventRecord: recordsCaptured) { + EventMetadata eventMetadata = eventRecord.getData().getMetadata(); + assertEquals(eventMetadata.getAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE), streamIdentifier.streamName()); + } + verify(acknowledgementSetManager, times(1)).create(any(), any(Duration.class)); + verify(acknowledgementSetSuccesses, atLeastOnce()).increment(); + verify(recordProcessed, times(1)).increment(anyDouble()); + verifyNoInteractions(recordProcessingErrors); + } + + @Test + void testProcessRecordsWithNDJsonInputCodec() + throws Exception { + List kinesisClientRecords = createInputKinesisClientRecords(); + when(processRecordsInput.records()).thenReturn(kinesisClientRecords); + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(false); + when(kinesisStreamConfig.getCheckPointInterval()).thenReturn(Duration.ofMillis(0)); + + PluginModel pluginModel = mock(PluginModel.class); + when(pluginModel.getPluginName()).thenReturn("ndjson"); + when(pluginModel.getPluginSettings()).thenReturn(Collections.emptyMap()); + when(kinesisSourceConfig.getCodec()).thenReturn(pluginModel); + + InputCodec codec = mock(InputCodec.class); + when(pluginFactory.loadPlugin(eq(InputCodec.class), any())).thenReturn(codec); + + when(acknowledgementSetManager.create(any(), any(Duration.class))).thenReturn(acknowledgementSet); + + List> records = new ArrayList<>(); + Event event = JacksonEvent.fromMessage(UUID.randomUUID().toString()); + event.getMetadata().setAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE, streamId); + Record record = new Record<>(event); + records.add(record); + when(kinesisRecordConverter.convert(eq(decompressionEngine), eq(kinesisClientRecords), eq(streamId))).thenReturn(records); + + kinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + KinesisCheckpointerRecord kinesisCheckpointerRecord = mock(KinesisCheckpointerRecord.class); + ExtendedSequenceNumber extendedSequenceNumber = mock(ExtendedSequenceNumber.class); + when(extendedSequenceNumber.sequenceNumber()).thenReturn(sequence_number); + when(extendedSequenceNumber.subSequenceNumber()).thenReturn(sub_sequence_number); + when(kinesisCheckpointerRecord.getCheckpointer()).thenReturn(checkpointer); + when(kinesisCheckpointerRecord.getExtendedSequenceNumber()).thenReturn(extendedSequenceNumber); + when(kinesisCheckpointerTracker.popLatestReadyToCheckpointRecord()).thenReturn(Optional.of(kinesisCheckpointerRecord)); + kinesisRecordProcessor.initialize(initializationInput); + + kinesisRecordProcessor.processRecords(processRecordsInput); + + verify(checkpointer).checkpoint(eq(sequence_number), eq(sub_sequence_number)); + final ArgumentCaptor> recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + + verify(bufferAccumulator).add(recordArgumentCaptor.capture()); + + List> recordsCaptured = recordArgumentCaptor.getAllValues(); + assertEquals(recordsCaptured.size(), records.size()); + for (Record eventRecord: recordsCaptured) { + EventMetadata eventMetadata = eventRecord.getData().getMetadata(); + assertEquals(eventMetadata.getAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE), streamIdentifier.streamName()); + } + + verify(acknowledgementSetManager, times(0)).create(any(), any(Duration.class)); + verify(recordProcessed, times(1)).increment(anyDouble()); + } + + @Test + void testProcessRecordsNoThrowException() + throws Exception { + List kinesisClientRecords = createInputKinesisClientRecords(); + when(processRecordsInput.records()).thenReturn(kinesisClientRecords); + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(false); + + List> records = new ArrayList<>(); + Event event = JacksonEvent.fromMessage(UUID.randomUUID().toString()); + event.getMetadata().setAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE, streamId); + Record record = new Record<>(event); + records.add(record); + when(kinesisRecordConverter.convert(eq(decompressionEngine), eq(kinesisClientRecords), eq(streamId))).thenReturn(records); + final Throwable exception = mock(RuntimeException.class); + doThrow(exception).when(bufferAccumulator).add(any(Record.class)); + + kinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + kinesisRecordProcessor.initialize(initializationInput); + + assertDoesNotThrow(() -> kinesisRecordProcessor.processRecords(processRecordsInput)); + verify(recordProcessingErrors, times(1)).increment(); + verify(recordProcessed, times(0)).increment(anyDouble()); + } + + @Test + void testProcessRecordsBufferFlushNoThrowException() + throws Exception { + List kinesisClientRecords = createInputKinesisClientRecords(); + when(processRecordsInput.records()).thenReturn(kinesisClientRecords); + when(kinesisSourceConfig.isAcknowledgments()).thenReturn(false); + + List> records = new ArrayList<>(); + Event event = JacksonEvent.fromMessage(UUID.randomUUID().toString()); + event.getMetadata().setAttribute(MetadataKeyAttributes.KINESIS_STREAM_NAME_METADATA_ATTRIBUTE, streamId); + Record record = new Record<>(event); + records.add(record); + when(kinesisRecordConverter.convert(eq(decompressionEngine), eq(kinesisClientRecords), eq(streamId))).thenReturn(records); + final Throwable exception = mock(RuntimeException.class); + doThrow(exception).when(bufferAccumulator).flush(); + + kinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + kinesisRecordProcessor.initialize(initializationInput); + + assertDoesNotThrow(() -> kinesisRecordProcessor.processRecords(processRecordsInput)); + verify(recordProcessingErrors, times(1)).increment(); + verify(recordProcessed, times(0)).increment(anyDouble()); + + } + + @Test + void testShardEndedLatestCheckpoint() { + KinesisRecordProcessor mockKinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + ShardEndedInput shardEndedInput = mock(ShardEndedInput.class); + when(shardEndedInput.checkpointer()).thenReturn(checkpointer); + + mockKinesisRecordProcessor.shardEnded(shardEndedInput); + + verify(shardEndedInput).checkpointer(); + } + + @ParameterizedTest + @ValueSource(classes = {ShutdownException.class, ThrottlingException.class, InvalidStateException.class}) + void testShardEndedCheckpointerThrowsNoThrowException(final Class exceptionType) throws Exception { + checkpointFailures = mock(Counter.class); + when(pluginMetrics.counterWithTags(KINESIS_CHECKPOINT_FAILURES, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName())).thenReturn(checkpointFailures); + + KinesisRecordProcessor mockKinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + ShardEndedInput shardEndedInput = mock(ShardEndedInput.class); + when(shardEndedInput.checkpointer()).thenReturn(checkpointer); + doThrow(exceptionType).when(checkpointer).checkpoint(); + + assertDoesNotThrow(() -> mockKinesisRecordProcessor.shardEnded(shardEndedInput)); + + verify(checkpointer).checkpoint(); + verify(shardEndedInput, times(1)).checkpointer(); + verify(checkpointFailures, times(1)).increment(); + } + + @Test + void testShutdownRequestedWithLatestCheckpoint() { + checkpointFailures = mock(Counter.class); + when(pluginMetrics.counterWithTags(KINESIS_CHECKPOINT_FAILURES, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName())).thenReturn(checkpointFailures); + + KinesisRecordProcessor mockKinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + ShutdownRequestedInput shutdownRequestedInput = mock(ShutdownRequestedInput.class); + when(shutdownRequestedInput.checkpointer()).thenReturn(checkpointer); + + mockKinesisRecordProcessor.shutdownRequested(shutdownRequestedInput); + + verify(shutdownRequestedInput).checkpointer(); + verify(checkpointFailures, times(0)).increment(); + } + + @ParameterizedTest + @ValueSource(classes = {ShutdownException.class, ThrottlingException.class, InvalidStateException.class}) + void testShutdownRequestedCheckpointerThrowsNoThrowException(final Class exceptionType) throws Exception { + checkpointFailures = mock(Counter.class); + when(pluginMetrics.counterWithTags(KINESIS_CHECKPOINT_FAILURES, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName())).thenReturn(checkpointFailures); + + KinesisRecordProcessor mockKinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + doThrow(exceptionType).when(checkpointer).checkpoint(eq(sequence_number), eq(sub_sequence_number)); + + assertDoesNotThrow(() -> mockKinesisRecordProcessor.checkpoint(checkpointer, sequence_number, sub_sequence_number)); + + verify(checkpointer).checkpoint(eq(sequence_number), eq(sub_sequence_number)); + verify(checkpointFailures, times(1)).increment(); + } + + @ParameterizedTest + @ValueSource(classes = {ShutdownException.class, ThrottlingException.class, InvalidStateException.class}) + void testShutdownRequestedCheckpointerThrowsNoThrowExceptionRegularCheckpoint(final Class exceptionType) throws Exception { + checkpointFailures = mock(Counter.class); + when(pluginMetrics.counterWithTags(KINESIS_CHECKPOINT_FAILURES, KINESIS_STREAM_TAG_KEY, streamIdentifier.streamName())).thenReturn(checkpointFailures); + + KinesisRecordProcessor mockKinesisRecordProcessor = new KinesisRecordProcessor(bufferAccumulator, kinesisSourceConfig, + acknowledgementSetManager, pluginMetrics, kinesisRecordConverter, kinesisCheckpointerTracker, streamIdentifier); + ShutdownRequestedInput shutdownRequestedInput = mock(ShutdownRequestedInput.class); + when(shutdownRequestedInput.checkpointer()).thenReturn(checkpointer); + doThrow(exceptionType).when(checkpointer).checkpoint(); + + assertDoesNotThrow(() -> mockKinesisRecordProcessor.shutdownRequested(shutdownRequestedInput)); + + verify(checkpointer).checkpoint(); + verify(shutdownRequestedInput, times(1)).checkpointer(); + verify(checkpointFailures, times(1)).increment(); + } + + private List createInputKinesisClientRecords() { + List kinesisClientRecords = new ArrayList<>(); + for (int i = 0; i< KinesisRecordProcessorTest.NUMBER_OF_RECORDS_TO_ACCUMULATE; i++) { + Event event = JacksonEvent.fromMessage(UUID.randomUUID().toString()); + KinesisClientRecord kinesisClientRecord = KinesisClientRecord.builder() + .data(ByteBuffer.wrap(event.toJsonString().getBytes())) + .sequenceNumber(Integer.toString(100 + i)).subSequenceNumber(i).build(); + kinesisClientRecords.add(kinesisClientRecord); + } + return kinesisClientRecords; + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisShardRecordProcessorFactoryTest.java b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisShardRecordProcessorFactoryTest.java new file mode 100644 index 0000000000..9f0a555253 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/java/org/opensearch/dataprepper/plugins/kinesis/source/processor/KinesisShardRecordProcessorFactoryTest.java @@ -0,0 +1,98 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.kinesis.source.processor; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisSourceConfig; +import org.opensearch.dataprepper.plugins.kinesis.source.configuration.KinesisStreamConfig; +import software.amazon.kinesis.common.StreamIdentifier; + +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class KinesisShardRecordProcessorFactoryTest { + private KinesisShardRecordProcessorFactory kinesisShardRecordProcessorFactory; + + private static final String streamId = "stream-1"; + private static final String codec_plugin_name = "json"; + + @Mock + private Buffer> buffer; + + @Mock + StreamIdentifier streamIdentifier; + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private PluginFactory pluginFactory; + + @Mock + private KinesisSourceConfig kinesisSourceConfig; + + @Mock + private KinesisStreamConfig kinesisStreamConfig; + + @Mock + private AcknowledgementSetManager acknowledgementSetManager; + + @Mock + private InputCodec codec; + + @BeforeEach + void setup() { + MockitoAnnotations.initMocks(this); + + PluginModel pluginModel = mock(PluginModel.class); + when(pluginModel.getPluginName()).thenReturn(codec_plugin_name); + when(pluginModel.getPluginSettings()).thenReturn(Collections.emptyMap()); + when(kinesisSourceConfig.getCodec()).thenReturn(pluginModel); + when(kinesisSourceConfig.getNumberOfRecordsToAccumulate()).thenReturn(100); + + codec = mock(InputCodec.class); + when(pluginFactory.loadPlugin(eq(InputCodec.class), any())).thenReturn(codec); + + when(streamIdentifier.streamName()).thenReturn(streamId); + when(kinesisStreamConfig.getName()).thenReturn(streamId); + when(kinesisSourceConfig.getStreams()).thenReturn(List.of(kinesisStreamConfig)); + } + + @Test + void testKinesisRecordProcessFactoryReturnsKinesisRecordProcessor() { + kinesisShardRecordProcessorFactory = new KinesisShardRecordProcessorFactory(buffer, kinesisSourceConfig, acknowledgementSetManager, pluginMetrics, codec); + assertInstanceOf(KinesisRecordProcessor.class, kinesisShardRecordProcessorFactory.shardRecordProcessor(streamIdentifier)); + } + + @Test + void testKinesisRecordProcessFactoryDefaultUnsupported() { + kinesisShardRecordProcessorFactory = new KinesisShardRecordProcessorFactory(buffer, kinesisSourceConfig, acknowledgementSetManager, pluginMetrics, codec); + assertThrows(UnsupportedOperationException.class, () -> kinesisShardRecordProcessorFactory.shardRecordProcessor()); + } +} diff --git a/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_acks_enabled.yaml b/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_acks_enabled.yaml new file mode 100644 index 0000000000..e5260372f5 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_acks_enabled.yaml @@ -0,0 +1,12 @@ +source: + kinesis: + streams: + - stream_name: "stream-1" + - stream_name: "stream-2" + - stream_name: "stream-3" + codec: + ndjson: + aws: + sts_role_arn: "arn:aws:iam::123456789012:role/OSI-PipelineRole" + region: "us-east-1" + acknowledgments: true \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_checkpoint_enabled.yaml b/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_checkpoint_enabled.yaml new file mode 100644 index 0000000000..c954d5c6b3 --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_checkpoint_enabled.yaml @@ -0,0 +1,20 @@ +source: + kinesis: + streams: + - stream_name: "stream-1" + initial_position: "EARLIEST" + checkpoint_interval: "20s" + compression: "gzip" + - stream_name: "stream-2" + initial_position: "EARLIEST" + checkpoint_interval: "PT15M" + compression: "gzip" + - stream_name: "stream-3" + initial_position: "EARLIEST" + checkpoint_interval: "PT2H" + compression: "gzip" + codec: + ndjson: + aws: + sts_role_arn: "arn:aws:iam::123456789012:role/OSI-PipelineRole" + region: "us-east-1" \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_polling_config_enabled.yaml b/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_polling_config_enabled.yaml new file mode 100644 index 0000000000..4a3156ec2a --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/resources/pipeline_with_polling_config_enabled.yaml @@ -0,0 +1,15 @@ +source: + kinesis: + streams: + - stream_name: "stream-1" + - stream_name: "stream-2" + - stream_name: "stream-3" + codec: + ndjson: + aws: + sts_role_arn: "arn:aws:iam::123456789012:role/OSI-PipelineRole" + region: "us-east-1" + consumer_strategy: "polling" + polling: + max_polling_records: 10 + idle_time_between_reads: 10s \ No newline at end of file diff --git a/data-prepper-plugins/kinesis-source/src/test/resources/simple_pipeline_with_extensions.yaml b/data-prepper-plugins/kinesis-source/src/test/resources/simple_pipeline_with_extensions.yaml new file mode 100644 index 0000000000..4f964cae7f --- /dev/null +++ b/data-prepper-plugins/kinesis-source/src/test/resources/simple_pipeline_with_extensions.yaml @@ -0,0 +1,5 @@ +extensions: + kinesis: + lease_coordination: + table_name: "kinesis-pipeline-kcl" + region: "us-east-1" \ No newline at end of file diff --git a/data-prepper-plugins/mongodb/src/main/java/org/opensearch/dataprepper/plugins/mongo/documentdb/DocumentDBSource.java b/data-prepper-plugins/mongodb/src/main/java/org/opensearch/dataprepper/plugins/mongo/documentdb/DocumentDBSource.java index b6ff1fbdf1..6a8e82a8a9 100644 --- a/data-prepper-plugins/mongodb/src/main/java/org/opensearch/dataprepper/plugins/mongo/documentdb/DocumentDBSource.java +++ b/data-prepper-plugins/mongodb/src/main/java/org/opensearch/dataprepper/plugins/mongo/documentdb/DocumentDBSource.java @@ -23,7 +23,7 @@ import java.util.function.Function; -@DataPrepperPlugin(name = "documentdb", pluginType = Source.class, pluginConfigurationType = MongoDBSourceConfig.class) +@DataPrepperPlugin(name = "documentdb", alternateNames = "mongodb", pluginType = Source.class, pluginConfigurationType = MongoDBSourceConfig.class) public class DocumentDBSource implements Source>, UsesEnhancedSourceCoordination { private static final Logger LOG = LoggerFactory.getLogger(DocumentDBSource.class); diff --git a/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/rules/mongodb-rule.yaml b/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/rules/mongodb-rule.yaml new file mode 100644 index 0000000000..33cc703072 --- /dev/null +++ b/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/rules/mongodb-rule.yaml @@ -0,0 +1,4 @@ +plugin_name: "mongodb" +apply_when: + - "$..source.mongodb" + - "$..source.mongodb.s3_bucket" \ No newline at end of file diff --git a/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/templates/documentdb-template.yaml b/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/templates/documentdb-template.yaml index 38bb70d8ca..80e179ff93 100644 --- a/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/templates/documentdb-template.yaml +++ b/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/templates/documentdb-template.yaml @@ -66,6 +66,7 @@ delete_s3_objects_on_read: true disable_s3_metadata_in_event: true scan: + acknowledgment_timeout: "PT10M" folder_partitions: depth: "<>.source.documentdb.s3_prefix>>" max_objects_per_ownership: 50 @@ -75,7 +76,7 @@ filter: include_prefix: ["<>.source.documentdb.s3_prefix>>"] scheduling: - interval: "60s" + interval: "20s" processor: "<<$.<>.processor>>" sink: "<<$.<>.sink>>" routes: "<<$.<>.routes>>" # In placeholder, routes or route (defined as alias) will be transformed to route in json as route will be primarily picked in pipelineModel. \ No newline at end of file diff --git a/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/templates/mongodb-template.yaml b/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/templates/mongodb-template.yaml new file mode 100644 index 0000000000..88208e631f --- /dev/null +++ b/data-prepper-plugins/mongodb/src/main/resources/org/opensearch/dataprepper/transforms/templates/mongodb-template.yaml @@ -0,0 +1,81 @@ +"<>": + workers: "<<$.<>.workers>>" + delay: "<<$.<>.delay>>" + buffer: "<<$.<>.buffer>>" + source: + mongodb: "<<$.<>.source.mongodb>>" + routes: + - initial_load: 'getMetadata("ingestion_type") == "EXPORT"' + - stream_load: 'getMetadata("ingestion_type") == "STREAM"' + sink: + - s3: + routes: + - initial_load + aws: + region: "<<$.<>.source.mongodb.s3_region>>" + sts_role_arn: "<<$.<>.source.mongodb.aws.sts_role_arn>>" + sts_external_id: "<<$.<>.source.mongodb.aws.sts_external_id>>" + sts_header_overrides: "<<$.<>.source.mongodb.aws.sts_header_overrides>>" + bucket: "<<$.<>.source.mongodb.s3_bucket>>" + threshold: + event_collect_timeout: "120s" + maximum_size: "2mb" + aggregate_threshold: + maximum_size: "128mb" + flush_capacity_ratio: 0 + object_key: + path_prefix: "${getMetadata(\"s3_partition_key\")}" + codec: + event_json: + default_bucket_owner: "<>.source.mongodb.aws.sts_role_arn>>" + - s3: + routes: + - stream_load + aws: + region: "<<$.<>.source.mongodb.s3_region>>" + sts_role_arn: "<<$.<>.source.mongodb.aws.sts_role_arn>>" + sts_external_id: "<<$.<>.source.mongodb.aws.sts_external_id>>" + sts_header_overrides: "<<$.<>.source.mongodb.aws.sts_header_overrides>>" + bucket: "<<$.<>.source.mongodb.s3_bucket>>" + threshold: + event_collect_timeout: "15s" + maximum_size: "1mb" + aggregate_threshold: + maximum_size: "128mb" + flush_capacity_ratio: 0 + object_key: + path_prefix: "${getMetadata(\"s3_partition_key\")}" + codec: + event_json: + default_bucket_owner: "<>.source.mongodb.aws.sts_role_arn>>" +"<>-s3": + workers: "<<$.<>.workers>>" + delay: "<<$.<>.delay>>" + buffer: "<<$.<>.buffer>>" + source: + s3: + codec: + event_json: + compression: "none" + aws: + region: "<<$.<>.source.mongodb.s3_region>>" + sts_role_arn: "<<$.<>.source.mongodb.aws.sts_role_arn>>" + sts_external_id: "<<$.<>.source.mongodb.aws.sts_external_id>>" + sts_header_overrides: "<<$.<>.source.mongodb.aws.sts_header_overrides>>" + acknowledgments: true + delete_s3_objects_on_read: true + disable_s3_metadata_in_event: true + scan: + folder_partitions: + depth: "<>.source.mongodb.s3_prefix>>" + max_objects_per_ownership: 50 + buckets: + - bucket: + name: "<<$.<>.source.mongodb.s3_bucket>>" + filter: + include_prefix: ["<>.source.mongodb.s3_prefix>>"] + scheduling: + interval: "60s" + processor: "<<$.<>.processor>>" + sink: "<<$.<>.sink>>" + routes: "<<$.<>.routes>>" # In placeholder, routes or route (defined as alias) will be transformed to route in json as route will be primarily picked in pipelineModel. \ No newline at end of file diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessor.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessor.java index 816e03c211..321d4eebdc 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessor.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -26,8 +28,6 @@ import java.util.function.Consumer; import java.util.function.Supplier; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "add_entries", pluginType = Processor.class, pluginConfigurationType = AddEntryProcessorConfig.class) public class AddEntryProcessor extends AbstractProcessor, Record> { private static final Logger LOG = LoggerFactory.getLogger(AddEntryProcessor.class); @@ -92,12 +92,28 @@ public Collection> doExecute(final Collection> recor } } } catch (Exception e) { - LOG.error(EVENT, "Error adding entry to record [{}] with key [{}], metadataKey [{}], value_expression [{}] format [{}], value [{}]", - recordEvent, entry.getKey(), entry.getMetadataKey(), entry.getValueExpression(), entry.getFormat(), entry.getValue(), e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Error adding entry to record [{}] with key [{}], metadataKey [{}], value_expression [{}] format [{}], value [{}]") + .addArgument(recordEvent) + .addArgument(entry.getKey()) + .addArgument(entry.getMetadataKey()) + .addArgument(entry.getValueExpression()) + .addArgument(entry.getFormat()) + .addArgument(entry.getValue()) + .setCause(e) + .log(); } } } catch(final Exception e){ - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessorConfig.java index 0c0f80be47..fc0df97e06 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/AddEntryProcessorConfig.java @@ -13,57 +13,87 @@ import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; import java.util.List; import java.util.stream.Stream; @JsonPropertyOrder -@JsonClassDescription("The `add_entries` processor adds entries to an event.") +@JsonClassDescription("The add_entries processor adds entries to an event.") public class AddEntryProcessorConfig { - public static class Entry { + static final String VALUE_EXPRESSION_KEY = "value_expression"; + static final String METADATA_KEY_KEY = "metadata_key"; + static final String APPEND_IF_KEY_EXISTS_KEY = "append_if_key_exists"; + static final String OVERWRITE_IF_KEY_EXISTS_KEY = "overwrite_if_key_exists"; - @JsonPropertyDescription("The key of the new entry to be added. Some examples of keys include `my_key`, " + - "`myKey`, and `object/sub_Key`. The key can also be a format expression, for example, `${/key1}` to " + - "use the value of field `key1` as the key.") + @JsonPropertyOrder + public static class Entry { + @JsonPropertyDescription("The key of the new entry to be added. Some examples of keys include my_key, " + + "myKey, and object/sub_Key. The key can also be a format expression, for example, ${/key1} to " + + "use the value of field key1 as the key.") + @AlsoRequired(values = { + @AlsoRequired.Required(name=METADATA_KEY_KEY, allowedValues = {"null"}) + }) private String key; - @JsonProperty("metadata_key") + @JsonProperty(METADATA_KEY_KEY) @JsonPropertyDescription("The key for the new metadata attribute. The argument must be a literal string key " + - "and not a JSON Pointer. Either one string key or `metadata_key` is required.") + "and not a JSON Pointer. Either one of key or metadata_key is required.") + @AlsoRequired(values = { + @AlsoRequired.Required(name="key", allowedValues = {"null"}) + }) private String metadataKey; @JsonPropertyDescription("The value of the new entry to be added, which can be used with any of the " + "following data types: strings, Booleans, numbers, null, nested objects, and arrays.") + @AlsoRequired(values = { + @AlsoRequired.Required(name="format", allowedValues = {"null"}), + @AlsoRequired.Required(name=VALUE_EXPRESSION_KEY, allowedValues = {"null"}) + }) private Object value; @JsonPropertyDescription("A format string to use as the value of the new entry, for example, " + - "`${key1}-${key2}`, where `key1` and `key2` are existing keys in the event. Required if neither " + - "`value` nor `value_expression` is specified.") + "${key1}-${key2}, where key1 and key2 are existing keys in the event. Required if neither" + + "value nor value_expression is specified.") + @AlsoRequired(values = { + @AlsoRequired.Required(name="value", allowedValues = {"null"}), + @AlsoRequired.Required(name=VALUE_EXPRESSION_KEY, allowedValues = {"null"}) + }) private String format; - @JsonProperty("value_expression") - @JsonPropertyDescription("An expression string to use as the value of the new entry. For example, `/key` " + + @JsonProperty(VALUE_EXPRESSION_KEY) + @JsonPropertyDescription("An expression string to use as the value of the new entry. For example, /key " + "is an existing key in the event with a type of either a number, a string, or a Boolean. " + "Expressions can also contain functions returning number/string/integer. For example, " + - "`length(/key)` will return the length of the key in the event when the key is a string. For more " + - "information about keys, see [Expression syntax](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/).") + "length(/key) will return the length of the key in the event when the key is a string. For more " + + "information about keys, see Expression syntax.") + @AlsoRequired(values = { + @AlsoRequired.Required(name="value", allowedValues = {"null"}), + @AlsoRequired.Required(name="format", allowedValues = {"null"}) + }) private String valueExpression; - @JsonProperty("add_when") - @JsonPropertyDescription("A [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that will be evaluated to determine whether the processor will be run on the event.") - private String addWhen; - - @JsonProperty("overwrite_if_key_exists") - @JsonPropertyDescription("When set to `true`, the existing value is overwritten if `key` already exists " + - "in the event. The default value is `false`.") + @JsonProperty(OVERWRITE_IF_KEY_EXISTS_KEY) + @JsonPropertyDescription("When set to true, the existing value is overwritten if key already exists " + + "in the event. The default value is false.") + @AlsoRequired(values = { + @AlsoRequired.Required(name=APPEND_IF_KEY_EXISTS_KEY, allowedValues = {"false"}) + }) private boolean overwriteIfKeyExists = false; - @JsonProperty("append_if_key_exists") - @JsonPropertyDescription("When set to `true`, the existing value will be appended if a `key` already " + - "exists in the event. An array will be created if the existing value is not an array. Default is `false`.") + @JsonProperty(APPEND_IF_KEY_EXISTS_KEY) + @JsonPropertyDescription("When set to true, the existing value will be appended if a key already " + + "exists in the event. An array will be created if the existing value is not an array. Default is false.") + @AlsoRequired(values = { + @AlsoRequired.Required(name=OVERWRITE_IF_KEY_EXISTS_KEY, allowedValues = {"false"}) + }) private boolean appendIfKeyExists = false; + @JsonProperty("add_when") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\", that will be evaluated to determine whether the processor will be run on the event.") + private String addWhen; + public String getKey() { return key; } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessor.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessor.java index 53ca543c17..2e45a4372e 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessor.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -19,14 +21,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - -@DataPrepperPlugin(name = "convert_entry_type", pluginType = Processor.class, pluginConfigurationType = ConvertEntryTypeProcessorConfig.class) +@DataPrepperPlugin(name = "convert_type", deprecatedName = "convert_entry_type", pluginType = Processor.class, pluginConfigurationType = ConvertEntryTypeProcessorConfig.class) public class ConvertEntryTypeProcessor extends AbstractProcessor, Record> { private static final Logger LOG = LoggerFactory.getLogger(ConvertEntryTypeProcessor.class); private final List convertEntryKeys; @@ -80,7 +83,18 @@ public Collection> doExecute(final Collection> recor if (keyVal != null) { if (!nullValues.contains(keyVal.toString())) { try { - recordEvent.put(key, converter.convert(keyVal, converterArguments)); + if (keyVal instanceof List || keyVal.getClass().isArray()) { + Stream inputStream; + if (keyVal.getClass().isArray()) { + inputStream = Arrays.stream((Object[])keyVal); + } else { + inputStream = ((List)keyVal).stream(); + } + List replacementList = inputStream.map(i -> converter.convert(i, converterArguments)).collect(Collectors.toList()); + recordEvent.put(key, replacementList); + } else { + recordEvent.put(key, converter.convert(keyVal, converterArguments)); + } } catch (final RuntimeException e) { LOG.error(EVENT, "Unable to convert key: {} with value: {} to {}", key, keyVal, type, e); recordEvent.getMetadata().addTags(tagsOnFailure); @@ -91,7 +105,13 @@ public Collection> doExecute(final Collection> recor } } } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); recordEvent.getMetadata().addTags(tagsOnFailure); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorConfig.java index b2b09ccfca..93f1c4bc91 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorConfig.java @@ -9,46 +9,56 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; import org.opensearch.dataprepper.typeconverter.ConverterArguments; import java.util.List; import java.util.Optional; @JsonPropertyOrder -@JsonClassDescription("The `convert_entry_type` processor converts a value type associated with the specified key in " + - "a event to the specified type. It is a casting processor that changes the types of some fields in events.") +@JsonClassDescription("The convert_type processor converts a value associated with the specified key in " + + "a event to the specified type. It is a casting processor that changes the types of specified fields in events.") public class ConvertEntryTypeProcessorConfig implements ConverterArguments { - @JsonProperty("key") + static final String KEY_KEY = "key"; + static final String KEYS_KEY = "keys"; + + @JsonProperty(KEY_KEY) @JsonPropertyDescription("Key whose value needs to be converted to a different type.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = KEYS_KEY, allowedValues = {"null"}) + }) private String key; - @JsonProperty("keys") - @JsonPropertyDescription("List of keys whose value needs to be converted to a different type.") + @JsonProperty(KEYS_KEY) + @JsonPropertyDescription("List of keys whose values needs to be converted to a different type.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = KEY_KEY, allowedValues = {"null"}) + }) private List keys; - @JsonProperty("type") - @JsonPropertyDescription("Target type for the key-value pair. Possible values are integer, long, double, big_decimal, string, and boolean. Default value is integer.") + @JsonProperty(value = "type", defaultValue = "integer") + @JsonPropertyDescription("Target type for the values. Default value is integer.") private TargetType type = TargetType.INTEGER; + @JsonProperty("null_values") + @JsonPropertyDescription("String representation of what constitutes a null value. If the field value equals one of these strings, then the value is considered null and is converted to null.") + private List nullValues; + /** * Optional scale value used only in the case of BigDecimal converter */ - @JsonProperty("scale") - @JsonPropertyDescription("Modifies the scale of the big_decimal when converting to a big_decimal. The default value is 0.") + @JsonProperty(value = "scale", defaultValue = "0") + @JsonPropertyDescription("Modifies the scale of the big_decimal when converting to a big_decimal. The default value is 0.") private int scale = 0; - @JsonProperty("convert_when") - @JsonPropertyDescription("Specifies a condition using a [Data Prepper expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/) for performing the convert_entry_type operation. If specified, the convert_entry_type operation runs only when the expression evaluates to true.") - private String convertWhen; - - @JsonProperty("null_values") - @JsonPropertyDescription("String representation of what constitutes a null value. If the field value equals one of these strings, then the value is considered null and is converted to null.") - private List nullValues; - @JsonProperty("tags_on_failure") @JsonPropertyDescription("A list of tags to be added to the event metadata when the event fails to convert.") private List tagsOnFailure; + @JsonProperty("convert_when") + @JsonPropertyDescription("Specifies a condition using a conditional expression for performing the convert_entry_type operation. If specified, the convert_entry_type operation runs only when the expression evaluates to true. Example: /mykey != \"---\"") + private String convertWhen; + public String getKey() { return key; } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessor.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessor.java index 0ed56b1b8d..fdaae6ab19 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessor.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -24,8 +26,6 @@ import java.util.Map; import java.util.Objects; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "copy_values", pluginType = Processor.class, pluginConfigurationType = CopyValueProcessorConfig.class) public class CopyValueProcessor extends AbstractProcessor, Record> { private static final Logger LOG = LoggerFactory.getLogger(CopyValueProcessor.class); @@ -93,7 +93,13 @@ public Collection> doExecute(final Collection> recor } } } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessorConfig.java index 1b3afeed0c..fb47207d09 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/CopyValueProcessorConfig.java @@ -13,13 +13,17 @@ import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `copy_values` processor copies values within an event and is a [mutate event]" + - "(https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/processors/mutate-event/) processor.") +@JsonClassDescription("The copy_values processor copies values within an event to other fields within the event.") public class CopyValueProcessorConfig { + static final String FROM_LIST_KEY = "from_list"; + static final String TO_LIST_KEY = "to_list"; + + @JsonPropertyOrder public static class Entry { @NotEmpty @NotNull @@ -33,16 +37,16 @@ public static class Entry { @JsonPropertyDescription("The key of the new entry to be added.") private String toKey; - @JsonProperty("copy_when") - @JsonPropertyDescription("A [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that will be evaluated to determine whether the processor will be run on the event.") - private String copyWhen; - @JsonProperty("overwrite_if_to_key_exists") - @JsonPropertyDescription("When set to `true`, the existing value is overwritten if `key` already exists in " + - "the event. The default value is `false`.") + @JsonPropertyDescription("When set to true, the existing value is overwritten if key already exists in " + + "the event. The default value is false.") private boolean overwriteIfToKeyExists = false; + @JsonProperty("copy_when") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\", that will be evaluated to determine whether the processor will be run on the event.") + private String copyWhen; + public String getFromKey() { return fromKey; } @@ -75,16 +79,22 @@ public Entry() { @JsonPropertyDescription("A list of entries to be copied in an event.") private List entries; - @JsonProperty("from_list") - @JsonPropertyDescription("The source list to copy values from.") + @JsonProperty(FROM_LIST_KEY) + @JsonPropertyDescription("The key of the list of objects to be copied.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = TO_LIST_KEY) + }) private String fromList; - @JsonProperty("to_list") - @JsonPropertyDescription("The target list to copy values to.") + @JsonProperty(TO_LIST_KEY) + @JsonPropertyDescription("The key of the new list to be added.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = FROM_LIST_KEY) + }) private String toList; @JsonProperty("overwrite_if_to_list_exists") - @JsonPropertyDescription("When set to `true`, the existing value is overwritten if `key` already exists in the event. The default value is `false`.") + @JsonPropertyDescription("When set to true, the existing value is overwritten if key already exists in the event. The default value is false.") private boolean overwriteIfToListExists = false; @AssertTrue(message = "Both from_list and to_list should be specified when copying entries between lists.") diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessor.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessor.java index 5dc0ee8b42..8e483cfd05 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessor.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -22,8 +24,6 @@ import java.util.List; import java.util.Objects; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "delete_entries", pluginType = Processor.class, pluginConfigurationType = DeleteEntryProcessorConfig.class) public class DeleteEntryProcessor extends AbstractProcessor, Record> { @@ -62,7 +62,13 @@ public Collection> doExecute(final Collection> recor recordEvent.delete(entry); } } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessorConfig.java index 2cfc3c5aba..f8a2b07513 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/DeleteEntryProcessorConfig.java @@ -18,20 +18,20 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `delete_entries` processor deletes entries, such as key-value pairs, from an event. " + - "You can define the keys you want to delete in the `with-keys` field following `delete_entries` in the YAML " + - "configuration file. Those keys and their values are deleted.") +@JsonClassDescription("The delete_entries processor deletes fields from events. " + + "You can define the keys you want to delete in the with_keys configuration. " + + "Those keys and their values are deleted from events.") public class DeleteEntryProcessorConfig { @NotEmpty @NotNull @JsonProperty("with_keys") @EventKeyConfiguration(EventKeyFactory.EventAction.DELETE) - @JsonPropertyDescription("An array of keys for the entries to be deleted.") + @JsonPropertyDescription("A list of keys to be deleted.") private List<@NotNull @NotEmpty EventKey> withKeys; @JsonProperty("delete_when") - @JsonPropertyDescription("Specifies under what condition the `delete_entries` processor should perform deletion. " + - "Default is no condition.") + @JsonPropertyDescription("Specifies under what condition the delete_entries processor should perform deletion. " + + "By default, keys are always deleted. Example: /mykey == \"---\"") private String deleteWhen; public List getWithKeys() { diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessor.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessor.java index 9c8655a4cb..7cc6ba237a 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessor.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -24,8 +26,6 @@ import java.util.Map; import java.util.Objects; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "list_to_map", pluginType = Processor.class, pluginConfigurationType = ListToMapProcessorConfig.class) public class ListToMapProcessor extends AbstractProcessor, Record> { @@ -78,7 +78,13 @@ public Collection> doExecute(final Collection> recor recordEvent.getMetadata().addTags(config.getTagsOnFailure()); continue; } catch (final Exception e) { - LOG.error(EVENT, "Error converting source list to map on record [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Error converting source list to map on record [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); recordEvent.getMetadata().addTags(config.getTagsOnFailure()); continue; } @@ -86,11 +92,23 @@ public Collection> doExecute(final Collection> recor try { updateEvent(recordEvent, targetMap); } catch (final Exception e) { - LOG.error(EVENT, "Error updating record [{}] after converting source list to map", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Error updating record [{}] after converting source list to map") + .addArgument(recordEvent) + .setCause(e) + .log(); recordEvent.getMetadata().addTags(config.getTagsOnFailure()); } } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); recordEvent.getMetadata().addTags(config.getTagsOnFailure()); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessorConfig.java index 7185576084..d998684444 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessorConfig.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonValue; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -19,10 +20,10 @@ import java.util.stream.Collectors; @JsonPropertyOrder -@JsonClassDescription("The `list_to_map` processor converts a list of objects from an event, " + - "where each object contains a `key` field, into a map of target keys.") +@JsonClassDescription("The list_to_map processor converts a list of objects from an event, " + + "where each object contains a key field, into a map of target keys.") public class ListToMapProcessorConfig { - enum FlattenedElement { + public enum FlattenedElement { FIRST("first"), LAST("last"); @@ -42,12 +43,17 @@ enum FlattenedElement { static FlattenedElement fromOptionValue(final String option) { return ACTIONS_MAP.get(option); } + + @JsonValue + public String getOptionValue() { + return name; + } } @NotEmpty @NotNull @JsonProperty("source") - @JsonPropertyDescription("The list of objects with `key` fields to be converted into keys for the generated map.") + @JsonPropertyDescription("The list of objects with key fields to be converted into keys for the generated map.") private String source; @JsonProperty("target") @@ -55,49 +61,50 @@ static FlattenedElement fromOptionValue(final String option) { "placed in the root node.") private String target = null; + @JsonProperty("use_source_key") + @JsonPropertyDescription("When true, keys in the generated map will use original keys from the source. " + + "Default is false.") + private boolean useSourceKey = false; + @JsonProperty("key") @JsonPropertyDescription("The key of the fields to be extracted as keys in the generated mappings. Must be " + - "specified if `use_source_key` is `false`.") + "specified if use_source_key is false.") private String key; @JsonProperty("value_key") - @JsonPropertyDescription("When specified, values given a `value_key` in objects contained in the source list " + + @JsonPropertyDescription("When specified, values given a value_key in objects contained in the source list " + "will be extracted and converted into the value specified by this option based on the generated map. " + "When not specified, objects contained in the source list retain their original value when mapped.") private String valueKey = null; - @JsonProperty("use_source_key") - @JsonPropertyDescription("When `true`, keys in the generated map will use original keys from the source. " + - "Default is `false`.") - private boolean useSourceKey = false; - @JsonProperty("extract_value") - @JsonPropertyDescription("When `true`, object values from the source list will be extracted and added to " + - "the generated map. When `false`, object values from the source list are added to the generated map " + - "as they appear in the source list. Default is `false`") + @JsonPropertyDescription("When true, object values from the source list will be extracted and added to " + + "the generated map. When false, object values from the source list are added to the generated map " + + "as they appear in the source list. Default is false") private boolean extractValue = false; @NotNull @JsonProperty("flatten") - @JsonPropertyDescription("When `true`, values in the generated map output flatten into single items based on " + - "the `flattened_element`. Otherwise, objects mapped to values from the generated map appear as lists.") + @JsonPropertyDescription("When true, values in the generated map output flatten into single items based on " + + "the flattened_element. Otherwise, objects mapped to values from the generated map appear as lists. " + + "Default is false.") private boolean flatten = false; @NotNull - @JsonProperty("flattened_element") - @JsonPropertyDescription("The element to keep, either `first` or `last`, when `flatten` is set to `true`.") + @JsonProperty(value = "flattened_element", defaultValue = "first") + @JsonPropertyDescription("The element to keep, either first or last, when flatten is set to true.") private FlattenedElement flattenedElement = FlattenedElement.FIRST; - @JsonProperty("list_to_map_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that will be evaluated to determine whether the processor will be " + - "run on the event. Default is `null`. All events will be processed unless otherwise stated.") - private String listToMapWhen; - @JsonProperty("tags_on_failure") @JsonPropertyDescription("A list of tags to add to the event metadata when the event fails to process.") private List tagsOnFailure; + @JsonProperty("list_to_map_when") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\", that will be evaluated to determine whether the processor will be " + + "run on the event. By default, all events will be processed unless otherwise stated.") + private String listToMapWhen; + public String getSource() { return source; } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessor.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessor.java index 38b5c3cf82..af291ebc05 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessor.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessor.java @@ -8,6 +8,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -28,8 +30,6 @@ import java.util.Objects; import java.util.Set; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "map_to_list", pluginType = Processor.class, pluginConfigurationType = MapToListProcessorConfig.class) public class MapToListProcessor extends AbstractProcessor, Record> { private static final Logger LOG = LoggerFactory.getLogger(MapToListProcessor.class); @@ -92,11 +92,22 @@ public Collection> doExecute(final Collection> recor recordEvent.put(config.getTarget(), targetList); } } catch (Exception e) { - LOG.error("Fail to perform Map to List operation", e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Fail to perform Map to List operation") + .setCause(e) + .log(); recordEvent.getMetadata().addTags(config.getTagsOnFailure()); } } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); recordEvent.getMetadata().addTags(config.getTagsOnFailure()); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessorConfig.java index d914d987fc..234f192c19 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/MapToListProcessorConfig.java @@ -16,7 +16,7 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `map_to_list` processor converts a map of key-value pairs to a list of objects. " + +@JsonClassDescription("The map_to_list processor converts a map of key-value pairs to a list of objects. " + "Each object contains the key and value in separate fields.") public class MapToListProcessorConfig { private static final String DEFAULT_KEY_NAME = "key"; @@ -27,7 +27,7 @@ public class MapToListProcessorConfig { @NotNull @JsonProperty("source") @JsonPropertyDescription("The source map used to perform the mapping operation. When set to an empty " + - "string (`\"\"`), it will use the root of the event as the `source`.") + "string (\"\"), it will use the root of the event as the source.") private String source; @NotEmpty @@ -36,39 +36,39 @@ public class MapToListProcessorConfig { @JsonPropertyDescription("The target for the generated list.") private String target; - @JsonProperty("key_name") - @JsonPropertyDescription("The name of the field in which to store the original key. Default is `key`.") + @JsonProperty(value = "key_name", defaultValue = DEFAULT_KEY_NAME) + @JsonPropertyDescription("The name of the field in which to store the original key. Default is key.") private String keyName = DEFAULT_KEY_NAME; - @JsonProperty("value_name") - @JsonPropertyDescription("The name of the field in which to store the original value. Default is `value`.") + @JsonProperty(value = "value_name", defaultValue = DEFAULT_VALUE_NAME) + @JsonPropertyDescription("The name of the field in which to store the original value. Default is value.") private String valueName = DEFAULT_VALUE_NAME; - @JsonProperty("map_to_list_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that will be evaluated to determine whether the processor will " + - "be run on the event. Default is `null`. All events will be processed unless otherwise stated.") - private String mapToListWhen; - - @JsonProperty("exclude_keys") - @JsonPropertyDescription("The keys in the source map that will be excluded from processing. Default is an " + - "empty list (`[]`).") - private List excludeKeys = DEFAULT_EXCLUDE_KEYS; - @JsonProperty("remove_processed_fields") - @JsonPropertyDescription("When `true`, the processor will remove the processed fields from the source map. " + - "Default is `false`.") + @JsonPropertyDescription("When true, the processor will remove the processed fields from the source map. " + + "Default is false.") private boolean removeProcessedFields = DEFAULT_REMOVE_PROCESSED_FIELDS; @JsonProperty("convert_field_to_list") - @JsonPropertyDescription("If `true`, the processor will convert the fields from the source map into lists and " + - "place them in fields in the target list. Default is `false`.") + @JsonPropertyDescription("If true, the processor will convert the fields from the source map into lists and " + + "place them in fields in the target list. Default is false.") private boolean convertFieldToList = false; + @JsonProperty("exclude_keys") + @JsonPropertyDescription("The keys in the source map that will be excluded from processing. Default is an " + + "empty list ([]).") + private List excludeKeys = DEFAULT_EXCLUDE_KEYS; + @JsonProperty("tags_on_failure") @JsonPropertyDescription("A list of tags to add to the event metadata when the event fails to process.") private List tagsOnFailure; + @JsonProperty("map_to_list_when") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\", that will be evaluated to determine whether the processor will " + + "be run on the event. By default, all events will be processed unless otherwise stated.") + private String mapToListWhen; + public String getSource() { return source; } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessor.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessor.java index 25fb27a9fe..b75aef2f52 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessor.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -21,8 +23,6 @@ import java.util.List; import java.util.Objects; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "rename_keys", pluginType = Processor.class, pluginConfigurationType = RenameKeyProcessorConfig.class) public class RenameKeyProcessor extends AbstractProcessor, Record> { @@ -70,7 +70,13 @@ public Collection> doExecute(final Collection> recor } } } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessorConfig.java index d0067a330e..3969b8b23f 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/RenameKeyProcessorConfig.java @@ -19,18 +19,21 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `rename_keys` processor renames keys in an event.") +@JsonClassDescription("The rename_keys processor renames keys in an event.") public class RenameKeyProcessorConfig { + @JsonPropertyOrder public static class Entry { @NotEmpty @NotNull @JsonProperty("from_key") + @JsonPropertyDescription("The key of the entry to be renamed.") @EventKeyConfiguration({EventKeyFactory.EventAction.GET, EventKeyFactory.EventAction.DELETE}) private EventKey fromKey; @NotEmpty @NotNull @JsonProperty("to_key") + @JsonPropertyDescription("The new key of the entry.") @EventKeyConfiguration(EventKeyFactory.EventAction.PUT) private EventKey toKey; @@ -39,9 +42,9 @@ public static class Entry { private boolean overwriteIfToKeyExists = false; @JsonProperty("rename_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that will be evaluated to determine whether the processor will be " + - "run on the event. Default is `null`. All events will be processed unless otherwise stated.") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\", that will be evaluated to determine whether the processor will be " + + "run on the event. By default, all events will be processed unless otherwise stated.") private String renameWhen; public EventKey getFromKey() { diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/SelectEntriesProcessorConfig.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/SelectEntriesProcessorConfig.java index b0e6a98f26..2b8c9fc75e 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/SelectEntriesProcessorConfig.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/SelectEntriesProcessorConfig.java @@ -15,7 +15,7 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `select_entries` processor selects entries from a Data Prepper event.") +@JsonClassDescription("The select_entries processor selects entries from an event.") public class SelectEntriesProcessorConfig { @NotEmpty @NotNull @@ -24,9 +24,9 @@ public class SelectEntriesProcessorConfig { private List includeKeys; @JsonProperty("select_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that will be evaluated to determine whether the processor will be " + - "run on the event. Default is `null`. All events will be processed unless otherwise stated.") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\", that will be evaluated to determine whether the processor will be " + + "run on the event. Default is null. All events will be processed unless otherwise stated.") private String selectWhen; public List getIncludeKeys() { diff --git a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetType.java b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetType.java index acf67e8702..32998e89ff 100644 --- a/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetType.java +++ b/data-prepper-plugins/mutate-event-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetType.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import org.opensearch.dataprepper.model.event.DataType; import org.opensearch.dataprepper.typeconverter.BigDecimalConverter; import org.opensearch.dataprepper.typeconverter.BooleanConverter; @@ -27,9 +28,9 @@ public enum TargetType { LONG(DataType.LONG, new LongConverter()), BIG_DECIMAL(DataType.BIG_DECIMAL, new BigDecimalConverter()); - private static final Map OPTIONS_MAP = Arrays.stream(TargetType.values()) + private static final Map OPTIONS_MAP = Arrays.stream(TargetType.values()) .collect(Collectors.toMap( - value -> value.dataType.getTypeName(), + value -> value.dataType, value -> value )); @@ -51,6 +52,11 @@ DataType getDataType() { @JsonCreator static TargetType fromOptionValue(final String option) { - return OPTIONS_MAP.get(option.toLowerCase()); + return OPTIONS_MAP.get(DataType.fromTypeName(option)); + } + + @JsonValue + public String getOptionValue() { + return dataType.getTypeName(); } } diff --git a/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorTests.java b/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorTests.java index 4165e32934..bb5cf32983 100644 --- a/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorTests.java +++ b/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ConvertEntryTypeProcessorTests.java @@ -20,11 +20,13 @@ import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import org.opensearch.dataprepper.model.record.Record; +import java.util.ArrayList; import java.math.BigDecimal; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.UUID; import java.util.stream.Stream; @@ -111,6 +113,45 @@ void testStringToIntegerConvertEntryTypeProcessor() { assertThat(event.get(TEST_KEY, Integer.class), equalTo(testValue)); } + @Test + void testArrayOfStringsToIntegerConvertEntryTypeProcessor() { + when(mockConfig.getType()).thenReturn(TargetType.fromOptionValue("integer")); + typeConversionProcessor = new ConvertEntryTypeProcessor(pluginMetrics, mockConfig, expressionEvaluator); + + Random random = new Random(); + Integer testValue1 = random.nextInt(); + Integer testValue2 = random.nextInt(); + Integer testValue3 = random.nextInt(); + String[] inputArray = {testValue1.toString(), testValue2.toString(), testValue3.toString()}; + List expectedResult = new ArrayList<>(); + expectedResult.add(testValue1); + expectedResult.add(testValue2); + expectedResult.add(testValue3); + Event event = executeAndGetProcessedEvent(inputArray); + assertThat(event.get(TEST_KEY, List.class), equalTo(expectedResult)); + } + + @Test + void testArrayListOfStringsToIntegerConvertEntryTypeProcessor() { + when(mockConfig.getType()).thenReturn(TargetType.fromOptionValue("integer")); + typeConversionProcessor = new ConvertEntryTypeProcessor(pluginMetrics, mockConfig, expressionEvaluator); + + Random random = new Random(); + Integer testValue1 = random.nextInt(); + Integer testValue2 = random.nextInt(); + Integer testValue3 = random.nextInt(); + List inputList = new ArrayList<>(); + inputList.add(testValue1.toString()); + inputList.add(testValue2.toString()); + inputList.add(testValue3.toString()); + List expectedResult = new ArrayList<>(); + expectedResult.add(testValue1); + expectedResult.add(testValue2); + expectedResult.add(testValue3); + Event event = executeAndGetProcessedEvent(inputList); + assertThat(event.get(TEST_KEY, List.class), equalTo(expectedResult)); + } + @Test void testBigDecimalToIntegerConvertEntryTypeProcessor() { BigDecimal testValue = new BigDecimal(Integer.MAX_VALUE); diff --git a/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessorConfig_FlattenedElementTest.java b/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessorConfig_FlattenedElementTest.java new file mode 100644 index 0000000000..c5413c49fd --- /dev/null +++ b/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/ListToMapProcessorConfig_FlattenedElementTest.java @@ -0,0 +1,54 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.mutateevent; + +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; +import org.junit.jupiter.params.provider.EnumSource; + +import java.util.stream.Stream; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.emptyString; +import static org.junit.jupiter.params.provider.Arguments.arguments; + +class ListToMapProcessorConfig_FlattenedElementTest { + + @ParameterizedTest + @EnumSource(ListToMapProcessorConfig.FlattenedElement.class) + void fromOptionValue_returns_expected_value(final ListToMapProcessorConfig.FlattenedElement flattenedElement) { + assertThat(ListToMapProcessorConfig.FlattenedElement.fromOptionValue(flattenedElement.getOptionValue()), equalTo(flattenedElement)); + } + + @ParameterizedTest + @EnumSource(ListToMapProcessorConfig.FlattenedElement.class) + void getOptionValue_returns_non_empty_string_for_all_types(final ListToMapProcessorConfig.FlattenedElement flattenedElement) { + assertThat(flattenedElement.getOptionValue(), notNullValue()); + assertThat(flattenedElement.getOptionValue(), not(emptyString())); + } + + @ParameterizedTest + @ArgumentsSource(FlattenedElementToKnownName.class) + void getOptionValue_returns_expected_name(final ListToMapProcessorConfig.FlattenedElement flattenedElement, final String expectedString) { + assertThat(flattenedElement.getOptionValue(), equalTo(expectedString)); + } + + static class FlattenedElementToKnownName implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(ListToMapProcessorConfig.FlattenedElement.FIRST, "first"), + arguments(ListToMapProcessorConfig.FlattenedElement.LAST, "last") + ); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetTypeTest.java b/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetTypeTest.java index 0b653fc766..b7d497fe66 100644 --- a/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetTypeTest.java +++ b/data-prepper-plugins/mutate-event-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetTypeTest.java @@ -5,6 +5,7 @@ package org.opensearch.dataprepper.plugins.processor.mutateevent; +import com.fasterxml.jackson.core.JsonProcessingException; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -25,12 +26,20 @@ class TargetTypeTest { void fromTypeName_returns_expected_value(final TargetType targetType) { assertThat(TargetType.fromOptionValue(targetType.getDataType().getTypeName()), equalTo(targetType)); } + @ParameterizedTest @ArgumentsSource(DataTypeToTargetTypeArgumentsProvider.class) void fromTypeName_returns_expected_value_based_on_DataType(final String typeName, final TargetType targetType) { assertThat(TargetType.fromOptionValue(typeName), equalTo(targetType)); } + + @ParameterizedTest + @ArgumentsSource(DataTypeToTargetTypeArgumentsProvider.class) + void getOptionValue_returns_data_type_name(final String typeName, final TargetType targetType) throws JsonProcessingException { + assertThat(targetType.getOptionValue(), equalTo(typeName)); + } + static class DataTypeToTargetTypeArgumentsProvider implements ArgumentsProvider { @Override public Stream provideArguments(final ExtensionContext extensionContext) { diff --git a/data-prepper-plugins/mutate-string-processors/README.md b/data-prepper-plugins/mutate-string-processors/README.md index 92f5f492e6..8d72eebc87 100644 --- a/data-prepper-plugins/mutate-string-processors/README.md +++ b/data-prepper-plugins/mutate-string-processors/README.md @@ -1,6 +1,7 @@ # Mutate String Processors The following is a list of processors to mutate a string. * [substitute_string](#substitutestringprocessor) +* [replace_string](#replacestringprocessor) * [split_string](#splitstringprocessor) * [uppercase_string](#uppercasestringprocessor) * [lowercase_string](#lowercasestringprocessor) @@ -50,6 +51,48 @@ must be escaped using `\\` when using double quotes and `\ ` when using single q --- +## ReplaceStringProcessor +A processor that takes in a key and changes its value by replacing each occurrence of from substring to target substring. + +### Basic Usage +To get started, create the following `pipeline.yaml`. +```yaml +pipeline: + source: + file: + path: "/full/path/to/logs_json.log" + record_type: "event" + format: "json" + processor: + - replace_string: + entries: + - source: "message" + from: "ab" + to: "ef" + sink: + - stdout: +``` + +Create the following file named `logs_json.log` and replace the `path` in the file source of your `pipeline.yaml` with the path of this file. + +```json +{"message": "ab:cd:ab:cd"} +``` +When you run Data Prepper with this `pipeline.yaml`, you should see the following output: + +```json +{"message": "ef:cd:ef:cd"} +``` +If `from` substring does not have a match, the key will be returned as it is. + +### Configuration +* `entries` - (required) - A list of entries to add to an event + * `source` - (required) - The key to be modified + * `from` - (required) - The substring to be replaced. This doesn't support regex. + * `to` - (required) - The String to be substituted for each match of `from` + +--- + ## SplitStringProcessor A processor that splits a field into an array using a delimiter character. diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/AbstractStringProcessor.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/AbstractStringProcessor.java index ae7a242da3..5ea2abcd57 100644 --- a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/AbstractStringProcessor.java +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/AbstractStringProcessor.java @@ -5,21 +5,20 @@ package org.opensearch.dataprepper.plugins.processor.mutatestring; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventKey; import org.opensearch.dataprepper.model.processor.AbstractProcessor; import org.opensearch.dataprepper.model.record.Record; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Collection; import java.util.List; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - public abstract class AbstractStringProcessor extends AbstractProcessor, Record> { private final List entries; static final Logger LOG = LoggerFactory.getLogger(AbstractStringProcessor.class); @@ -37,7 +36,14 @@ public Collection> doExecute(final Collection> recor try { performStringAction(recordEvent); } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.error(NOISY, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); } } diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessor.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessor.java index c2c2071e95..c1a19d20b7 100644 --- a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessor.java +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessor.java @@ -18,10 +18,10 @@ * This processor takes in a key and changes its value to a lowercase string. If the value is not a string, * no action is performed. */ -@DataPrepperPlugin(name = "lowercase_string", pluginType = Processor.class, pluginConfigurationType = WithKeysConfig.class) +@DataPrepperPlugin(name = "lowercase_string", pluginType = Processor.class, pluginConfigurationType = LowercaseStringProcessorConfig.class) public class LowercaseStringProcessor extends AbstractStringProcessor { @DataPrepperPluginConstructor - public LowercaseStringProcessor(final PluginMetrics pluginMetrics, final WithKeysConfig config) { + public LowercaseStringProcessor(final PluginMetrics pluginMetrics, final LowercaseStringProcessorConfig config) { super(pluginMetrics, config); } diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessorConfig.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessorConfig.java new file mode 100644 index 0000000000..d6c599420c --- /dev/null +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessorConfig.java @@ -0,0 +1,14 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.mutatestring; + +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonPropertyOrder +@JsonClassDescription("Makes all characters in strings lowercase.") +public class LowercaseStringProcessorConfig extends WithKeysConfig { +} diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessor.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessor.java new file mode 100644 index 0000000000..15ec8615db --- /dev/null +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessor.java @@ -0,0 +1,56 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.mutatestring; + +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventKey; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import org.opensearch.dataprepper.model.processor.Processor; + +import java.util.Objects; + +/** + * This processor takes in a key and changes its value by replacing each occurrence of from substring to target substring. + * If the value is not a string, no action is performed. + */ +@DataPrepperPlugin(name = "replace_string", pluginType = Processor.class, pluginConfigurationType = ReplaceStringProcessorConfig.class) +public class ReplaceStringProcessor extends AbstractStringProcessor { + private final ExpressionEvaluator expressionEvaluator; + + @DataPrepperPluginConstructor + public ReplaceStringProcessor(final PluginMetrics pluginMetrics, final ReplaceStringProcessorConfig config, final ExpressionEvaluator expressionEvaluator) { + super(pluginMetrics, config); + this.expressionEvaluator = expressionEvaluator; + + for(final ReplaceStringProcessorConfig.Entry entry : config.getEntries()) { + if (entry.getReplaceWhen() != null + && !expressionEvaluator.isValidExpressionStatement(entry.getReplaceWhen())) { + throw new InvalidPluginConfigurationException( + String.format("substitute_when %s is not a valid expression statement. See https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/ for valid expression syntax", entry.getReplaceWhen())); + } + } + } + + @Override + protected void performKeyAction(final Event recordEvent, final ReplaceStringProcessorConfig.Entry entry, final String value) + { + if (Objects.nonNull(entry.getReplaceWhen()) && !expressionEvaluator.evaluateConditional(entry.getReplaceWhen(), recordEvent)) { + return; + } + + final String newValue = value.replace(entry.getFrom(), entry.getTo()); + recordEvent.put(entry.getSource(), newValue); + } + + @Override + protected EventKey getKey(final ReplaceStringProcessorConfig.Entry entry) { + return entry.getSource(); + } +} diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessorConfig.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessorConfig.java new file mode 100644 index 0000000000..28f7762278 --- /dev/null +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessorConfig.java @@ -0,0 +1,70 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.mutatestring; + +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.opensearch.dataprepper.model.event.EventKey; + +import java.util.List; + +@JsonPropertyOrder +@JsonClassDescription("The replace_string processor replaces all occurrence of substring in key’s value with a " + + "replacement string.") +public class ReplaceStringProcessorConfig implements StringProcessorConfig { + @JsonPropertyOrder + public static class Entry { + @JsonPropertyDescription("The key of the field to modify.") + private EventKey source; + @JsonPropertyDescription("The substring to be replaced in the source.") + private String from; + @JsonPropertyDescription("The string to be replaced for each match of from.") + private String to; + + @JsonProperty("replace_when") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\"', that will be evaluated to determine whether the processor will be " + + "run on the event. By default, all events will be processed unless otherwise stated.") + private String replaceWhen; + + public EventKey getSource() { + return source; + } + + public String getFrom() { + return from; + } + + public String getTo() { + return to; + } + + public String getReplaceWhen() { return replaceWhen; } + + public Entry(final EventKey source, final String from, final String to, final String replaceWhen) { + this.source = source; + this.from = from; + this.to = to; + this.replaceWhen = replaceWhen; + } + + public Entry() {} + } + + @JsonPropertyDescription("List of entries. Each entry defines a replacement.") + private List entries; + + public List getEntries() { + return entries; + } + + @Override + public List getIterativeConfig() { + return entries; + } +} diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SplitStringProcessorConfig.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SplitStringProcessorConfig.java index c0a9a4ba70..fd18d1aa8c 100644 --- a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SplitStringProcessorConfig.java +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SplitStringProcessorConfig.java @@ -14,34 +14,42 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; import org.opensearch.dataprepper.model.event.EventKey; import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `split_string` processor splits a field into an array using a delimiting character and is a " + - "[mutate string](https://github.com/opensearch-project/data-prepper/tree/main/data-prepper-plugins/mutate-string-processors#mutate-string-processors) processor.") +@JsonClassDescription("The split_string processor splits a field into an array using a delimiting character.") public class SplitStringProcessorConfig implements StringProcessorConfig { + @JsonPropertyOrder public static class Entry { + static final String DELIMITER_REGEX_KEY = "delimiter_regex"; @NotEmpty @NotNull - @JsonPropertyDescription("The key to split.") + @JsonPropertyDescription("The key name of the field to split.") private EventKey source; - @JsonProperty("delimiter_regex") - @JsonPropertyDescription("The regex string responsible for the split. Cannot be defined at the same time as `delimiter`. " + - "At least `delimiter` or `delimiter_regex` must be defined.") - private String delimiterRegex; - @Size(min = 1, max = 1) @JsonPropertyDescription("The separator character responsible for the split. " + - "Cannot be defined at the same time as `delimiter_regex`. " + - "At least `delimiter` or `delimiter_regex` must be defined.") + "Cannot be defined at the same time as delimiter_regex. " + + "At least delimiter or delimiter_regex must be defined.") + @AlsoRequired(values = { + @AlsoRequired.Required(name=DELIMITER_REGEX_KEY, allowedValues = {"null", "\"\""}) + }) private String delimiter; + @JsonProperty("delimiter_regex") + @JsonPropertyDescription("The regex string responsible for the split. Cannot be defined at the same time as delimiter. " + + "At least delimiter or delimiter_regex must be defined.") + @AlsoRequired(values = { + @AlsoRequired.Required(name="delimiter", allowedValues = {"null", "\"\""}) + }) + private String delimiterRegex; + @JsonProperty("split_when") - @JsonPropertyDescription("Specifies under what condition the `split_string` processor should perform splitting. " + + @JsonPropertyDescription("Specifies under what condition the split_string processor should perform splitting. " + "Default is no condition.") private String splitWhen; @@ -75,7 +83,8 @@ public List getIterativeConfig() { return entries; } - @JsonPropertyDescription("List of entries. Valid values are `source`, `delimiter`, and `delimiter_regex`.") + @JsonPropertyDescription("List of entries. Each entry defines a split.") + @NotNull private List<@Valid Entry> entries; public List getEntries() { diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SubstituteStringProcessorConfig.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SubstituteStringProcessorConfig.java index f7b008f015..f2c3c3f820 100644 --- a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SubstituteStringProcessorConfig.java +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/SubstituteStringProcessorConfig.java @@ -9,29 +9,33 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import jakarta.validation.constraints.NotNull; import org.opensearch.dataprepper.model.event.EventKey; import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `substitute_string` processor matches a key’s value against a regular expression and " + +@JsonClassDescription("The substitute_string processor matches a key’s value against a regular expression and " + "replaces all matches with a replacement string.") public class SubstituteStringProcessorConfig implements StringProcessorConfig { + @JsonPropertyOrder public static class Entry { - @JsonPropertyDescription("The key to modify.") + @JsonPropertyDescription("The key of the field to modify.") private EventKey source; - @JsonPropertyDescription("The Regex String to be replaced. Special regex characters such as `[` and `]` must " + - "be escaped using `\\\\` when using double quotes and `\\ ` when using single quotes. " + - "See [Java Patterns](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html) " + + + @JsonPropertyDescription("The regular expression to match on for replacement. Special regex characters such as [ and ] must " + + "be escaped using \\\\ when using double quotes and \\ when using single quotes. " + + "See Java Patterns " + "for more information.") private String from; - @JsonPropertyDescription("The String to be substituted for each match of `from`.") + + @JsonPropertyDescription("The string to be substituted for each match of from.") private String to; @JsonProperty("substitute_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), " + - "such as `/some-key == \"test\"'`, that will be evaluated to determine whether the processor will be " + - "run on the event. Default is `null`. All events will be processed unless otherwise stated.") + @JsonPropertyDescription("A conditional expression, " + + "such as /some-key == \"test\", that will be evaluated to determine whether the processor will be " + + "run on the event. By default, all events will be processed unless otherwise stated.") private String substituteWhen; public EventKey getSource() { @@ -58,7 +62,8 @@ public Entry(final EventKey source, final String from, final String to, final St public Entry() {} } - @JsonPropertyDescription("List of entries. Valid values are `source`, `from`, and `to`, and `substitute_when`.") + @JsonPropertyDescription("List of entries. Each entry defines a substitution.") + @NotNull private List entries; public List getEntries() { diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessor.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessor.java index 2a1213f30f..0e3c0655ae 100644 --- a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessor.java +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessor.java @@ -16,10 +16,10 @@ * This processor takes in a key and changes its value to a string with the leading and trailing spaces trimmed. * If the value is not a string, no action is performed. */ -@DataPrepperPlugin(name = "trim_string", pluginType = Processor.class, pluginConfigurationType = WithKeysConfig.class) +@DataPrepperPlugin(name = "trim_string", pluginType = Processor.class, pluginConfigurationType = TrimStringProcessorConfig.class) public class TrimStringProcessor extends AbstractStringProcessor { @DataPrepperPluginConstructor - public TrimStringProcessor(final PluginMetrics pluginMetrics, final WithKeysConfig config) { + public TrimStringProcessor(final PluginMetrics pluginMetrics, final TrimStringProcessorConfig config) { super(pluginMetrics, config); } diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessorConfig.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessorConfig.java new file mode 100644 index 0000000000..9200b98ad9 --- /dev/null +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessorConfig.java @@ -0,0 +1,14 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.mutatestring; + +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonPropertyOrder +@JsonClassDescription("Trims strings by removing whitespace from the beginning and end of the strings.") +public class TrimStringProcessorConfig extends WithKeysConfig { +} diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessor.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessor.java index 28e7aa9847..bb7247aab2 100644 --- a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessor.java +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessor.java @@ -18,10 +18,10 @@ * This processor takes in a key and changes its value to an uppercase string. If the value is not a string, * no action is performed. */ -@DataPrepperPlugin(name = "uppercase_string", pluginType = Processor.class, pluginConfigurationType = WithKeysConfig.class) +@DataPrepperPlugin(name = "uppercase_string", pluginType = Processor.class, pluginConfigurationType = UppercaseStringProcessorConfig.class) public class UppercaseStringProcessor extends AbstractStringProcessor { @DataPrepperPluginConstructor - public UppercaseStringProcessor(final PluginMetrics pluginMetrics, final WithKeysConfig config) { + public UppercaseStringProcessor(final PluginMetrics pluginMetrics, final UppercaseStringProcessorConfig config) { super(pluginMetrics, config); } diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessorConfig.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessorConfig.java new file mode 100644 index 0000000000..975c90a444 --- /dev/null +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessorConfig.java @@ -0,0 +1,14 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.mutatestring; + +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonPropertyOrder +@JsonClassDescription("Makes all characters in strings uppercase.") +public class UppercaseStringProcessorConfig extends WithKeysConfig { +} diff --git a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/WithKeysConfig.java b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/WithKeysConfig.java index a8087954d1..c9a7e6b52c 100644 --- a/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/WithKeysConfig.java +++ b/data-prepper-plugins/mutate-string-processors/src/main/java/org/opensearch/dataprepper/plugins/processor/mutatestring/WithKeysConfig.java @@ -5,33 +5,24 @@ package org.opensearch.dataprepper.plugins.processor.mutatestring; -import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import org.opensearch.dataprepper.model.event.EventKey; import java.util.List; -@JsonPropertyOrder -@JsonClassDescription("This processor is a [mutate string]" + - "(https://github.com/opensearch-project/data-prepper/tree/main/data-prepper-plugins/mutate-string-processors#mutate-string-processors) processor.") -public class WithKeysConfig implements StringProcessorConfig { +public abstract class WithKeysConfig implements StringProcessorConfig { @NotNull @NotEmpty @JsonProperty("with_keys") - @JsonPropertyDescription("A list of keys to trim the white space from.") + @JsonPropertyDescription("A list of keys to modify.") private List withKeys; @Override public List getIterativeConfig() { return withKeys; } - - public List getWithKeys() { - return withKeys; - } } diff --git a/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessorTests.java b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessorTests.java index 8185d8ef8c..4ce9db800d 100644 --- a/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessorTests.java +++ b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/LowercaseStringProcessorTests.java @@ -41,7 +41,7 @@ public class LowercaseStringProcessorTests { private PluginMetrics pluginMetrics; @Mock - private WithKeysConfig config; + private LowercaseStringProcessorConfig config; @BeforeEach public void setup() { diff --git a/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessorTests.java b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessorTests.java new file mode 100644 index 0000000000..a552596d38 --- /dev/null +++ b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/ReplaceStringProcessorTests.java @@ -0,0 +1,198 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.processor.mutatestring; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.event.TestEventFactory; +import org.opensearch.dataprepper.event.TestEventKeyFactory; +import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventBuilder; +import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.event.EventKey; +import org.opensearch.dataprepper.model.event.EventKeyFactory; +import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import org.opensearch.dataprepper.model.record.Record; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class ReplaceStringProcessorTests { + private static final EventFactory TEST_EVENT_FACTORY = TestEventFactory.getTestEventFactory(); + private final EventKeyFactory eventKeyFactory = TestEventKeyFactory.getTestEventFactory(); + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private ReplaceStringProcessorConfig config; + + @Mock + private ExpressionEvaluator expressionEvaluator; + + + @BeforeEach + public void setup() { + lenient().when(config.getIterativeConfig()).thenReturn(Collections.singletonList(createEntry("message", "a", "b", null))); + lenient().when(config.getEntries()).thenReturn(Collections.singletonList(createEntry("message", "a", "b", null))); + } + + @Test + void invalid_Replace_when_throws_InvalidPluginConfigurationException() { + final String ReplaceWhen = UUID.randomUUID().toString(); + when(config.getEntries()).thenReturn(Collections.singletonList(createEntry("message", "a", "b", ReplaceWhen))); + + when(expressionEvaluator.isValidExpressionStatement(ReplaceWhen)).thenReturn(false); + + assertThrows(InvalidPluginConfigurationException.class, this::createObjectUnderTest); + } + + @Test + public void testHappyPathReplaceStringProcessor() { + final ReplaceStringProcessor processor = createObjectUnderTest(); + final Record record = getEvent("abcd"); + final List> editedRecords = (List>) processor.doExecute(Collections.singletonList(record)); + + assertThat(editedRecords.get(0).getData().containsKey("message"), is(true)); + assertThat(editedRecords.get(0).getData().get("message", Object.class), equalTo("bbcd")); + } + + @Test + public void testNoMatchReplaceStringProcessor() { + final ReplaceStringProcessor processor = createObjectUnderTest(); + final Record record = getEvent("qwerty"); + final List> editedRecords = (List>) processor.doExecute(Collections.singletonList(record)); + + assertThat(editedRecords.get(0).getData().containsKey("message"), is(true)); + assertThat(editedRecords.get(0).getData().get("message", Object.class), equalTo("qwerty")); + } + + @Test + public void testHappyPathMultiReplaceStringProcessor() { + when(config.getIterativeConfig()).thenReturn(Arrays.asList(createEntry("message", "a", "b", null), + createEntry("message2", "c", "d", null))); + when(config.getEntries()).thenReturn(Arrays.asList(createEntry("message", "a", "b", null), + createEntry("message2", "c", "d", null))); + + final ReplaceStringProcessor processor = createObjectUnderTest(); + final Record record = getEvent("abcd"); + record.getData().put("message2", "cdef"); + final List> editedRecords = (List>) processor.doExecute(Collections.singletonList(record)); + + assertThat(editedRecords.get(0).getData().containsKey("message"), is(true)); + assertThat(editedRecords.get(0).getData().get("message", Object.class), equalTo("bbcd")); + assertThat(editedRecords.get(0).getData().containsKey("message2"), is(true)); + assertThat(editedRecords.get(0).getData().get("message2", Object.class), equalTo("ddef")); + } + + @Test + public void testValueIsNotStringReplaceStringProcessor() { + final ReplaceStringProcessor processor = createObjectUnderTest(); + final Record record = getEvent(3); + final List> editedRecords = (List>) processor.doExecute(Collections.singletonList(record)); + + assertThat(editedRecords.get(0).getData().containsKey("message"), is(true)); + assertThat(editedRecords.get(0).getData().get("message", Object.class), equalTo(3)); + } + + @Test + public void testValueIsNullReplaceStringProcessor() { + final ReplaceStringProcessor processor = createObjectUnderTest(); + final Record record = getEvent(null); + final List> editedRecords = (List>) processor.doExecute(Collections.singletonList(record)); + + assertThat(editedRecords.get(0).getData().containsKey("message"), is(true)); + assertThat(editedRecords.get(0).getData().get("message", Object.class), equalTo(null)); + } + + @Test + public void testValueIsObjectReplaceStringProcessor() { + final ReplaceStringProcessor processor = createObjectUnderTest(); + final TestObject testObject = new TestObject(); + testObject.a = "msg"; + final Record record = getEvent(testObject); + final List> editedRecords = (List>) processor.doExecute(Collections.singletonList(record)); + + assertThat(editedRecords.get(0).getData().containsKey("message"), is(true)); + assertThat(editedRecords.get(0).getData().get("message", TestObject.class), equalTo(testObject)); + assertThat(editedRecords.get(0).getData().get("message", TestObject.class).a, equalTo(testObject.a)); + } + + @Test + public void test_events_are_identical_when_ReplaceWhen_condition_returns_false() { + final String ReplaceWhen = UUID.randomUUID().toString(); + + when(config.getIterativeConfig()).thenReturn(Collections.singletonList(createEntry("message", "[?\\\\+]", "b", ReplaceWhen))); + when(config.getEntries()).thenReturn(Collections.singletonList(createEntry("message", "[?\\\\+]", "b", ReplaceWhen))); + when(expressionEvaluator.isValidExpressionStatement(ReplaceWhen)).thenReturn(true); + + final ReplaceStringProcessor processor = createObjectUnderTest(); + final Record record = getEvent("abcd"); + + when(expressionEvaluator.evaluateConditional(ReplaceWhen, record.getData())).thenReturn(false); + final List> editedRecords = (List>) processor.doExecute(Collections.singletonList(record)); + + assertThat(editedRecords.get(0).getData().toMap(), equalTo(record.getData().toMap())); + } + + @Test + public void testShutdown() { + final ReplaceStringProcessor processor = createObjectUnderTest(); + assertThat(processor.isReadyForShutdown(), is(true)); + } + + private static class TestObject { + public String a; + + @Override + public boolean equals(Object other) { + if(other instanceof TestObject) { + return ((TestObject) other).a.equals(this.a); + } + + return false; + } + } + + private ReplaceStringProcessorConfig.Entry createEntry(final String source, final String from, final String to, final String ReplaceWhen) { + final EventKey sourceKey = eventKeyFactory.createEventKey(source); + + return new ReplaceStringProcessorConfig.Entry(sourceKey, from, to, ReplaceWhen); + } + + private ReplaceStringProcessor createObjectUnderTest() { + return new ReplaceStringProcessor(pluginMetrics, config, expressionEvaluator); + } + + private Record getEvent(Object message) { + final Map testData = new HashMap<>(); + testData.put("message", message); + return buildRecordWithEvent(testData); + } + + private static Record buildRecordWithEvent(final Map data) { + return new Record<>(TEST_EVENT_FACTORY.eventBuilder(EventBuilder.class) + .withData(data) + .withEventType("event") + .build()); + } +} diff --git a/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessorTests.java b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessorTests.java index 921f6a6094..4b41e41e3f 100644 --- a/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessorTests.java +++ b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/TrimStringProcessorTests.java @@ -40,7 +40,7 @@ public class TrimStringProcessorTests { private PluginMetrics pluginMetrics; @Mock - private WithKeysConfig config; + private TrimStringProcessorConfig config; @BeforeEach public void setup() { diff --git a/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessorTests.java b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessorTests.java index c4db6a55e5..89fda3b21a 100644 --- a/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessorTests.java +++ b/data-prepper-plugins/mutate-string-processors/src/test/java/org/opensearch/dataprepper/plugins/processor/mutatestring/UppercaseStringProcessorTests.java @@ -41,7 +41,7 @@ public class UppercaseStringProcessorTests { private PluginMetrics pluginMetrics; @Mock - private WithKeysConfig config; + private UppercaseStringProcessorConfig config; @BeforeEach public void setup() { diff --git a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessor.java b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessor.java index 472ffec940..50a05d86cb 100644 --- a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessor.java +++ b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessor.java @@ -6,6 +6,8 @@ package org.opensearch.dataprepper.plugins.processor.obfuscation; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -29,8 +31,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "obfuscate", pluginType = Processor.class, pluginConfigurationType = ObfuscationProcessorConfig.class) public class ObfuscationProcessor extends AbstractProcessor, Record> { @@ -99,7 +99,12 @@ public ObfuscationProcessor(final PluginMetrics pluginMetrics, Pattern p = Pattern.compile(rawPattern); patterns.add(p); } catch (Exception e) { - LOG.error(e.getMessage()); + LOG.error(NOISY,e.getMessage()); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage(e.getMessage()) + .log(); throw new InvalidPluginConfigurationException("Invalid Pattern: \"" + rawPattern + "\" for source field " + this.source); } } diff --git a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessorConfig.java b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessorConfig.java index fa4df27ce1..749e8cb495 100644 --- a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessorConfig.java +++ b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/ObfuscationProcessorConfig.java @@ -12,13 +12,15 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import org.opensearch.dataprepper.model.annotations.UsesDataPrepperPlugin; import org.opensearch.dataprepper.model.configuration.PluginModel; import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; +import org.opensearch.dataprepper.plugins.processor.obfuscation.action.ObfuscationAction; import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `obfuscate` process enables obfuscation of fields inside your documents in order to " + +@JsonClassDescription("The obfuscate process enables obfuscation of fields inside your documents in order to " + "protect sensitive data.") public class ObfuscationProcessorConfig { @@ -28,35 +30,35 @@ public class ObfuscationProcessorConfig { @NotNull private String source; - @JsonProperty("patterns") - @JsonPropertyDescription("A list of regex patterns that allow you to obfuscate specific parts of a field. Only parts that match the regex pattern will obfuscate. When not provided, the processor obfuscates the whole field.") - private List patterns; - @JsonProperty("target") @JsonPropertyDescription("The new field in which to store the obfuscated value. " + "This leaves the original source field unchanged. " + - "When no `target` is provided, the source field updates with the obfuscated value.") + "When no target is provided, the source field updates with the obfuscated value.") private String target; + @JsonProperty("patterns") + @JsonPropertyDescription("A list of regex patterns that allow you to obfuscate specific parts of a field. Only parts that match the regex pattern will obfuscate. When not provided, the processor obfuscates the whole field.") + private List patterns; + @JsonProperty("action") - @JsonPropertyDescription("The obfuscation action. Available actions include 'hash' and 'mask'.") + @JsonPropertyDescription("The obfuscation action. Available actions include hash and mask.") + @UsesDataPrepperPlugin(pluginType = ObfuscationAction.class) private PluginModel action; - @JsonProperty("obfuscate_when") - @JsonPropertyDescription("Specifies under what condition the Obfuscate processor should perform matching. " + - "Default is no condition.") - private String obfuscateWhen; + @JsonProperty("single_word_only") + @JsonPropertyDescription("When set to true, a word boundary \b is added to the pattern, " + + "which causes obfuscation to be applied only to words that are standalone in the input text. " + + "By default, it is false, meaning obfuscation patterns are applied to all occurrences.") + private boolean singleWordOnly = false; @JsonProperty("tags_on_match_failure") - @JsonPropertyDescription("The tag to add to an event if the obfuscate processor fails to match the pattern.") + @JsonPropertyDescription("The tag to add to an event if the obfuscate processor fails to match the pattern.") private List tagsOnMatchFailure; - @JsonProperty("single_word_only") - @JsonPropertyDescription("When set to `true`, a word boundary `\b` is added to the pattern, " + - "which causes obfuscation to be applied only to words that are standalone in the input text. " + - "By default, it is false, meaning obfuscation patterns are applied to all occurrences. " + - "Can be used for Data Prepper 2.8 or greater.") - private boolean singleWordOnly = false; + @JsonProperty("obfuscate_when") + @JsonPropertyDescription("A conditional expression such as /is_testing_data == true. " + + "If specified, the obfuscate processor will only run on events when the expression evaluates to true. ") + private String obfuscateWhen; public ObfuscationProcessorConfig() { } diff --git a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/MaskActionConfig.java b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/MaskActionConfig.java index 01e5fd01a3..ea38c39fc9 100644 --- a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/MaskActionConfig.java +++ b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/MaskActionConfig.java @@ -5,21 +5,30 @@ package org.opensearch.dataprepper.plugins.processor.obfuscation.action; +import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Pattern; +@JsonClassDescription("Obfuscates data by masking data. Without any configuration this will replace text with ***") +@JsonPropertyOrder public class MaskActionConfig { + private static final String DEFAULT_MASK_CHARACTER = "*"; + private static final int DEFAULT_MASK_LENGTH = 3; - @JsonProperty("mask_character") + @JsonProperty(value = "mask_character", defaultValue = DEFAULT_MASK_CHARACTER) @Pattern(regexp = "[*#!%&@]", message = "Valid characters are *, #, $, %, &, ! and @") - private String maskCharacter = "*"; + @JsonPropertyDescription("The character to use to mask text. By default, this is *") + private String maskCharacter = DEFAULT_MASK_CHARACTER; - @JsonProperty("mask_character_length") + @JsonProperty(value = "mask_character_length", defaultValue = "" + DEFAULT_MASK_LENGTH) @Min(1) @Max(10) - private int maskCharacterLength = 3; + @JsonPropertyDescription("The length of the character mask to apply. By default, this is three characters.") + private int maskCharacterLength = DEFAULT_MASK_LENGTH; public MaskActionConfig() { } diff --git a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/OneWayHashActionConfig.java b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/OneWayHashActionConfig.java index 3e3ab622c5..a63f810772 100644 --- a/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/OneWayHashActionConfig.java +++ b/data-prepper-plugins/obfuscate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/obfuscation/action/OneWayHashActionConfig.java @@ -5,6 +5,8 @@ package org.opensearch.dataprepper.plugins.processor.obfuscation.action; +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import org.opensearch.dataprepper.model.event.EventKeyConfiguration; import org.opensearch.dataprepper.model.event.EventKeyFactory; @@ -15,29 +17,29 @@ import jakarta.validation.constraints.Size; import org.opensearch.dataprepper.model.event.EventKey; -import org.opensearch.dataprepper.model.event.EventKeyConfiguration; -import org.opensearch.dataprepper.model.event.EventKeyFactory; - +@JsonClassDescription("Obfuscates data by performing a one-way hash.") +@JsonPropertyOrder public class OneWayHashActionConfig { + public static final String DEFAULT_FORMAT = "SHA-512"; @JsonProperty("salt") @JsonPropertyDescription("Salt value to use when generating hash. If not specified, salt will be randomly generated by the processor.") @Size(min = 16, message = "Minimum size of salt string is 16.") @Size(max = 64, message = "Maximum size of salt string is 64") private String salt; - @JsonProperty("format") - @Pattern(regexp = "SHA-512", message = "Valid values: SHA-512") - @JsonPropertyDescription("Format of one way hash to generate. Default to SHA-512.") - private String format = "SHA-512"; - @JsonProperty("salt_key") - @JsonPropertyDescription("A key to compute salt based on a value provided as part of a record." + - "If key or value was not found in the record(s), a salt defined in the pipeline configuration will be used instead.") + @JsonPropertyDescription("A key to compute salt based on a value provided as part of a record. " + + "If key or value was not found in the event, a salt defined in the pipeline configuration will be used instead.") @EventKeyConfiguration(EventKeyFactory.EventAction.GET) private EventKey saltKey; - + + @JsonProperty(value = "format", defaultValue = DEFAULT_FORMAT) + @Pattern(regexp = DEFAULT_FORMAT, message = "Valid values: SHA-512") + @JsonPropertyDescription("Format of one way hash to generate. Default to SHA-512.") + private String format = DEFAULT_FORMAT; + public OneWayHashActionConfig(){ } diff --git a/data-prepper-plugins/ocsf/build.gradle b/data-prepper-plugins/ocsf/build.gradle new file mode 100644 index 0000000000..205686105c --- /dev/null +++ b/data-prepper-plugins/ocsf/build.gradle @@ -0,0 +1,6 @@ + +dependencies { + implementation project(':data-prepper-api') +} + + diff --git a/data-prepper-plugins/ocsf/src/main/resources/org/opensearch/dataprepper/transforms/rules/ocsf-v1.1-panw-traffic-rule.yaml b/data-prepper-plugins/ocsf/src/main/resources/org/opensearch/dataprepper/transforms/rules/ocsf-v1.1-panw-traffic-rule.yaml new file mode 100644 index 0000000000..52e5b9be3b --- /dev/null +++ b/data-prepper-plugins/ocsf/src/main/resources/org/opensearch/dataprepper/transforms/rules/ocsf-v1.1-panw-traffic-rule.yaml @@ -0,0 +1,6 @@ +plugin_name: "ocsf-v1.1-panw-traffic" +apply_when: + - "$..processor[?(@.ocsf.type == 'palo_alto_networks_traffic_logs')]" + - "$..processor[?(@.ocsf.version == '1.1')]" + + diff --git a/data-prepper-plugins/ocsf/src/main/resources/org/opensearch/dataprepper/transforms/templates/ocsf-v1.1-panw-traffic-template.yaml b/data-prepper-plugins/ocsf/src/main/resources/org/opensearch/dataprepper/transforms/templates/ocsf-v1.1-panw-traffic-template.yaml new file mode 100644 index 0000000000..dba9929bf8 --- /dev/null +++ b/data-prepper-plugins/ocsf/src/main/resources/org/opensearch/dataprepper/transforms/templates/ocsf-v1.1-panw-traffic-template.yaml @@ -0,0 +1,673 @@ +"<>": + workers: "<<$.<>.workers>>" + delay: "<<$.<>.delay>>" + buffer: "<<$.<>.buffer>>" + source: "<<$.<>.source>>" + sink: "<<$.<>.sink>>" + processor: + - date: + match: + - key: Start_Time + patterns: + - 'yyyy-MM-dd''T''HH:mm:ss' + - 'yyyy-MM-dd''T''HH:mm:ss''Z''' + destination: time_dt + output_format: 'yyyy-MM-dd''T''HH:mm:ss' + - date: + match: + - key: Start_Time + patterns: + - 'yyyy-MM-dd''T''HH:mm:ss' + - 'yyyy-MM-dd''T''HH:mm:ss''Z''' + destination: time + output_format: epoch_second + - date: + match: + - key: Generated_Time + patterns: + - 'yyyy-MM-dd''T''HH:mm:ss' + - 'yyyy-MM-dd''T''HH:mm:ss''Z''' + destination: metadata/processed_time + output_format: epoch_second + - date: + match: + - key: Generated_Time + patterns: + - 'yyyy-MM-dd''T''HH:mm:ss' + - 'yyyy-MM-dd''T''HH:mm:ss''Z''' + destination: metadata/processed_time_dt + output_format: 'yyyy-MM-dd''T''HH:mm:ss' + - date: + match: + - key: Receive_Time + patterns: + - 'yyyy-MM-dd''T''HH:mm:ss' + - 'yyyy-MM-dd''T''HH:mm:ss''Z''' + destination: metadata/logged_time + output_format: epoch_second + - date: + match: + - key: Receive_Time + patterns: + - 'yyyy-MM-dd''T''HH:mm:ss' + - 'yyyy-MM-dd''T''HH:mm:ss''Z''' + destination: metadata/logged_time_dt + output_format: 'yyyy-MM-dd''T''HH:mm:ss' + - convert_type: + key: time + type: integer + - convert_type: + key: metadata/processed_time + type: integer + - add_entries: + entries: + - key: category_uid + value: 4 + - key: category_name + value: Network Activity + - key: class_uid + value: 4001 + - key: class_name + value: Network Activity + - key: metadata/product/name + value: Palo Alto Networks Next-Generation Firewall + - key: metadata/product/vendor_name + value: Palo Alto Networks + - key: metadata/profiles + value: + - security_control + - network_proxy + - host + - datetime + - key: metadata/version + value: 1.1.0 + - key: severity_id + value: 1 + - key: severity + value: Informational + - key: device/type_id + value: 9 + - key: connection_info/direction_id + value: 1 + - add_entries: + entries: + - key: observables_0/name + value: src_endpoint.ip + - key: observables_0/type + value: IP Address + - key: observables_0/type_id + value: '2' + - key: observables_0/value + format: '${Source_Address}' + - add_entries: + entries: + - key: observables_1/name + value: dst_endpoint.ip + - key: observables_1/type + value: IP Address + - key: observables_1/type_id + value: '2' + - key: observables_1/value + format: '${Destination_Address}' + - add_entries: + entries: + - key: observables_2/name + value: firewall_rule.uid + - key: observables_2/type + value: Resource UID + - key: observables_2/type_id + value: '10' + - key: observables_2/value + format: '${Rule_UUID}' + - convert_type: + key: observables_0/type_id + type: integer + - convert_type: + key: observables_1/type_id + type: integer + - convert_type: + key: observables_2/type_id + type: integer + - add_entries: + entries: + - key: observables + value: [] + - key: observables + value_expression: /observables_0 + append_if_key_exists: true + - add_entries: + entries: + - key: observables + value_expression: /observables_1 + append_if_key_exists: true + - add_entries: + entries: + - key: observables + value_expression: /observables_2 + append_if_key_exists: true + - rename_keys: + entries: + - from_key: Source_Address + to_key: src_endpoint/ip + overwrite_if_to_key_exists: true + - from_key: Source_Port + to_key: src_endpoint/port + overwrite_if_to_key_exists: true + - from_key: Virtual_System + to_key: src_endpoint/instance_uid + overwrite_if_to_key_exists: true + - from_key: Virtual_System_Name + to_key: src_endpoint/name + overwrite_if_to_key_exists: true + - from_key: NAT_Source_IP + to_key: src_endpoint/proxy_endpoint/ip + overwrite_if_to_key_exists: true + - from_key: NAT_Source_Port + to_key: src_endpoint/proxy_endpoint/port + overwrite_if_to_key_exists: true + - from_key: Source_Zone + to_key: src_endpoint/zone + overwrite_if_to_key_exists: true + - from_key: Inbound_Interface + to_key: src_endpoint/interface_uid + overwrite_if_to_key_exists: true + - from_key: Source_Location + to_key: src_endpoint/location/country + overwrite_if_to_key_exists: true + - from_key: Source_Device_Category + to_key: src_endpoint/type + overwrite_if_to_key_exists: true + - from_key: Source_MAC_Address + to_key: src_endpoint/mac + overwrite_if_to_key_exists: true + - from_key: Source_Hostname + to_key: src_endpoint/hostname + overwrite_if_to_key_exists: true + - from_key: Source_Device_OS_Version + to_key: src_endpoint/os/version + overwrite_if_to_key_exists: true + - from_key: Source_Device_OS_Family + to_key: src_endpoint/os/type + overwrite_if_to_key_exists: true + - from_key: Source_Device_Model + to_key: src_endpoint/device_hw_info/cpu_type + overwrite_if_to_key_exists: true + - from_key: Source_Device_Profile + to_key: unmapped/Source_Device_Profile + overwrite_if_to_key_exists: true + - from_key: Source_Device_Vendor + to_key: src_endpoint/device_hw_info/bios_manufacturer + overwrite_if_to_key_exists: true + - from_key: Destination_Device_Category + to_key: dst_endpoint/type + overwrite_if_to_key_exists: true + - from_key: Destination_MAC_Address + to_key: dst_endpoint/mac + overwrite_if_to_key_exists: true + - from_key: Destination_Hostname + to_key: dst_endpoint/hostname + overwrite_if_to_key_exists: true + - from_key: Destination_Device_OS_Version + to_key: dst_endpoint/os/version + overwrite_if_to_key_exists: true + - from_key: Destination_Device_OS_Family + to_key: dst_endpoint/os/type + overwrite_if_to_key_exists: true + - from_key: Destination_Device_Model + to_key: dst_endpoint/device_hw_info/cpu_type + overwrite_if_to_key_exists: true + - from_key: Destination_Device_Vendor + to_key: dst_endpoint/device_hw_info/bios_manufacturer + overwrite_if_to_key_exists: true + - from_key: Destination_Device_Profile + to_key: unmapped/Destination_Device_Profile + overwrite_if_to_key_exists: true + - from_key: Destination_Location + to_key: dst_endpoint/location/country + overwrite_if_to_key_exists: true + - from_key: Destination_Zone + to_key: dst_endpoint/zone + overwrite_if_to_key_exists: true + - from_key: Destination_Address + to_key: dst_endpoint/ip + overwrite_if_to_key_exists: true + - from_key: Destination_Port + to_key: dst_endpoint/port + overwrite_if_to_key_exists: true + - from_key: NAT_Destination_IP + to_key: dst_endpoint/proxy_endpoint/ip + overwrite_if_to_key_exists: true + - from_key: NAT_Destination_Port + to_key: dst_endpoint/proxy_endpoint/port + overwrite_if_to_key_exists: true + - from_key: Outbound_Interface + to_key: dst_endpoint/interface_uid + overwrite_if_to_key_exists: true + - from_key: XFF_Address + to_key: proxy_endpoint/ip + overwrite_if_to_key_exists: true + - from_key: Application_Subcategory + to_key: unmapped/Application_Risk + overwrite_if_to_key_exists: true + - from_key: Application_Category + to_key: unmapped/Application_Category + overwrite_if_to_key_exists: true + - from_key: Application_Technology + to_key: unmapped/Application_Technology + overwrite_if_to_key_exists: true + - from_key: Application_Risk + to_key: unmapped/Application_Risk + overwrite_if_to_key_exists: true + - from_key: XFF_Address + to_key: proxy_endpoint/ip + overwrite_if_to_key_exists: true + - from_key: Session_ID + to_key: connection_info/session/uid + overwrite_if_to_key_exists: true + - from_key: Repeat_Count + to_key: connection_info/session/count + overwrite_if_to_key_exists: true + - from_key: Flags + to_key: connection_info/tcp_flags + overwrite_if_to_key_exists: true + - from_key: Protocol + to_key: connection_info/protocol_name + overwrite_if_to_key_exists: true + - from_key: Serial_Number + to_key: device/hw_info/serial_number + overwrite_if_to_key_exists: true + - from_key: Device_Name + to_key: device/hostname + overwrite_if_to_key_exists: true + - from_key: Host_ID + to_key: device/uid + overwrite_if_to_key_exists: true + - from_key: Container_ID + to_key: device/container/uid + overwrite_if_to_key_exists: true + - from_key: POD_Namespace + to_key: unmapped/POD_Namespace + overwrite_if_to_key_exists: true + - from_key: POD_Name + to_key: device/container/pod_uuid + overwrite_if_to_key_exists: true + - from_key: HTTP2_Connection + to_key: unmapped/HTTP2_Connection + overwrite_if_to_key_exists: true + - from_key: Parent_Session_ID + to_key: unmapped/Parent_Session_ID + overwrite_if_to_key_exists: true + - from_key: Source_VM_UUID + to_key: unmapped/Source_VM_UUID + overwrite_if_to_key_exists: true + - from_key: Destination_VM_UUID + to_key: unmapped/Source_VM_UUID + overwrite_if_to_key_exists: true + - from_key: Device_Group_Hierarchy_Level_1 + to_key: unmapped/Device_Group_Hierarchy_Level_1 + overwrite_if_to_key_exists: true + - from_key: Device_Group_Hierarchy_Level_2 + to_key: unmapped/Device_Group_Hierarchy_Level_2 + overwrite_if_to_key_exists: true + - from_key: Device_Group_Hierarchy_Level_3 + to_key: unmapped/Device_Group_Hierarchy_Level_3 + overwrite_if_to_key_exists: true + - from_key: Device_Group_Hierarchy_Level_4 + to_key: unmapped/Device_Group_Hierarchy_Level_4 + overwrite_if_to_key_exists: true + - from_key: High_Resolution_Timestamp + to_key: unmapped/High_Resolution_Timestamp + overwrite_if_to_key_exists: true + - from_key: Log_Action + to_key: unmapped/Log_Action + overwrite_if_to_key_exists: true + - from_key: Action_Flags + to_key: unmapped/Action_Flags + overwrite_if_to_key_exists: true + - from_key: Tunnel_ID_IMSI + to_key: unmapped/Tunnel_ID_IMSI + overwrite_if_to_key_exists: true + - from_key: Monitor_Tag_IMEI + to_key: unmapped/Monitor_Tag_IMEI + overwrite_if_to_key_exists: true + - from_key: Tunnel_Type + to_key: unmapped/Tunnel_Type + overwrite_if_to_key_exists: true + - from_key: SCTP_Association_ID + to_key: unmapped/SCTP_Association_ID + overwrite_if_to_key_exists: true + - from_key: App_Flap_Count + to_key: unmapped/App_Flap_Count + overwrite_if_to_key_exists: true + - from_key: Policy_ID + to_key: unmapped/Policy_ID + overwrite_if_to_key_exists: true + - from_key: SD_WAN_Cluster + to_key: unmapped/SD_WAN_Cluster + overwrite_if_to_key_exists: true + - from_key: SD_WAN_Device_Type + to_key: unmapped/SD_WAN_Device_Type + overwrite_if_to_key_exists: true + - from_key: SD_WAN_Cluster_Type + to_key: unmapped/SD_WAN_Cluster_Type + overwrite_if_to_key_exists: true + - from_key: SD_WAN_Site + to_key: unmapped/SD_WAN_Site + overwrite_if_to_key_exists: true + - from_key: Link_Switches + to_key: unmapped/Link_Switches + overwrite_if_to_key_exists: true + - from_key: A_Slice_Service_Type + to_key: unmapped/A_Slice_Service_Type + overwrite_if_to_key_exists: true + - from_key: A_Slice_Differentiator + to_key: unmapped/A_Slice_Differentiator + overwrite_if_to_key_exists: true + - from_key: Source_External_Dynamic_List + to_key: unmapped/Source_External_Dynamic_List + overwrite_if_to_key_exists: true + - from_key: Destination_External_Dynamic_List + to_key: unmapped/Destination_External_Dynamic_List + overwrite_if_to_key_exists: true + - from_key: Source_Dynamic_Address_Group + to_key: unmapped/Source_Dynamic_Address_Group + overwrite_if_to_key_exists: true + - from_key: Destination_Dynamic_Address_Group + to_key: unmapped/Destination_Dynamic_Address_Group + overwrite_if_to_key_exists: true + - from_key: Application_Characteristic + to_key: unmapped/Application_Characteristic + overwrite_if_to_key_exists: true + - from_key: Application_Container + to_key: unmapped/Application_Container + overwrite_if_to_key_exists: true + - from_key: Tunneled_Application + to_key: unmapped/Tunneled_Application + overwrite_if_to_key_exists: true + - from_key: Application_SaaS + to_key: unmapped/Application_SaaS + overwrite_if_to_key_exists: true + - from_key: Application_Sanctioned_State + to_key: unmapped/Application_Sanctioned_State + overwrite_if_to_key_exists: true + - from_key: Offloaded + to_key: unmapped/Offloaded + overwrite_if_to_key_exists: true + - from_key: Session_Owner + to_key: unmapped/Session_Owner + overwrite_if_to_key_exists: true + - from_key: Packets_Sent + to_key: traffic/packets_out + overwrite_if_to_key_exists: true + - from_key: Packets_Received + to_key: traffic/packets_in + overwrite_if_to_key_exists: true + - from_key: Packets + to_key: traffic/packets + overwrite_if_to_key_exists: true + - from_key: Bytes_Sent + to_key: traffic/bytes_out + overwrite_if_to_key_exists: true + - from_key: Bytes_Received + to_key: traffic/bytes_in + overwrite_if_to_key_exists: true + - from_key: Bytes + to_key: traffic/bytes + overwrite_if_to_key_exists: true + - from_key: SCTP_Chunks_Sent + to_key: traffic/chunks_out + overwrite_if_to_key_exists: true + - from_key: SCTP_Chunks_Received + to_key: traffic/chunks_in + overwrite_if_to_key_exists: true + - from_key: SCTP_Chunks + to_key: traffic/chunks + overwrite_if_to_key_exists: true + - from_key: Application + to_key: unmapped/Application + overwrite_if_to_key_exists: true + - from_key: Source_User + to_key: actor/user/name + overwrite_if_to_key_exists: true + - from_key: Destination_User + to_key: actor/invoked_by + overwrite_if_to_key_exists: true + - from_key: Dynamic_User_Group_Name + to_key: unmapped/Dynamic_User_Group_Name + overwrite_if_to_key_exists: true + - from_key: Rule_Name + to_key: firewall_rule/name + overwrite_if_to_key_exists: true + - from_key: Rule_UUID + to_key: firewall_rule/uid + overwrite_if_to_key_exists: true + - from_key: Session_End_Reason + to_key: firewall_rule/condition + overwrite_if_to_key_exists: true + - from_key: Action_Source + to_key: firewall_rule/match_location + overwrite_if_to_key_exists: true + - from_key: Category + to_key: unmapped/Category + overwrite_if_to_key_exists: true + - from_key: Type + to_key: metadata/product/feature/name + overwrite_if_to_key_exists: true + - from_key: Threat_Content_Type + to_key: metadata/log_name + overwrite_if_to_key_exists: true + - from_key: Sequence_Number + to_key: metadata/log_version + overwrite_if_to_key_exists: true + - from_key: Elapsed_Time + to_key: unmapped/Elapsed_Time + overwrite_if_to_key_exists: true + - from_key: Parent_Start_Time + to_key: unmapped/Parent_Start_Time + overwrite_if_to_key_exists: true + - translate: + mappings: + - source: Action + targets: + - target: activity_id + default: 99 + map: + allow: 1 + deny: 5 + drop: 2 + drop ICMP: 2 + reset both: 3 + reset client: 3 + reset server: 3 + - translate: + mappings: + - source: Action + targets: + - target: activity_name + default: Other + map: + allow: Open + deny: Refuse + drop: Close + drop ICMP: Close + reset both: Reset + reset client: Reset + reset server: Reset + - translate: + mappings: + - source: Action + targets: + - target: action_id + default: 0 + map: + allow: 1 + deny: 2 + drop: 99 + drop ICMP: 99 + reset both: 99 + reset client: 99 + reset server: 99 + - translate: + mappings: + - source: Action + targets: + - target: action + default: Other + map: + allow: Allowed + deny: Denied + drop: Other + drop ICMP: Other + reset both: Other + reset client: Other + reset server: Other + - translate: + mappings: + - source: Action + targets: + - target: type_uid + default: 400199 + map: + allow: 400101 + deny: 400105 + drop: 400102 + drop ICMP: 400102 + reset both: 400103 + reset client: 400103 + reset server: 400103 + - translate: + mappings: + - source: Action + targets: + - target: type_name + default: 'Network Activity: Unknown' + map: + allow: 'Network Activity: Open' + deny: 'Network Activity: Refuse' + drop: 'Network Activity: Close' + drop ICMP: 'Network Activity: Close' + reset both: 'Network Activity: Reset' + reset client: 'Network Activity: Reset' + reset server: 'Network Activity: Reset' + - translate: + mappings: + - source: Action + targets: + - target: status_id + default: 0 + map: + allow: 1 + deny: 2 + drop: 99 + drop ICMP: 99 + reset both: 99 + reset client: 99 + reset server: 99 + - translate: + mappings: + - source: Action + targets: + - target: status + default: 0 + map: + allow: Success + deny: Failure + drop: Other + drop ICMP: Other + reset both: Other + reset client: Other + reset server: Other + - rename_keys: + entries: + - from_key: Action + to_key: unmapped/Action + overwrite_if_to_key_exists: true + - convert_type: + key: status_id + type: integer + - convert_type: + key: action_id + type: integer + - convert_type: + key: type_uid + type: integer + - convert_type: + key: activity_id + type: integer + - convert_type: + key: metadata/log_version + type: string + - convert_type: + key: metadata/logged_time + type: integer + - convert_type: + key: connection_info/uid + type: string + - convert_type: + key: connection_info/session/uid + type: string + - convert_type: + key: connection_info/direction_id + type: integer + - convert_type: + key: connection_info/session/count + type: integer + - convert_type: + key: connection_info/tcp_flags + type: integer + - convert_type: + key: dst_endpoint/port + type: integer + - convert_type: + key: dst_endpoint/proxy_endpoint/port + type: integer + - convert_type: + key: src_endpoint/port + type: integer + - convert_type: + key: src_endpoint/proxy_endpoint/port + type: integer + - convert_type: + key: traffic/bytes + type: integer + - convert_type: + key: traffic/bytes_in + type: integer + - convert_type: + key: traffic/bytes_out + type: integer + - convert_type: + key: traffic/packets + type: integer + - convert_type: + key: traffic/packets_in + type: integer + - convert_type: + key: traffic/packets_out + type: integer + - convert_type: + key: traffic/chunks + type: integer + - convert_type: + key: traffic/chunks_in + type: integer + - convert_type: + key: traffic/chunks_out + type: integer + - delete_entries: + with_keys: + - s3 + - message + - Generated_Time + - Start_Time + - Receive_Time + - FUTURE_USE_1 + - FUTURE_USE_2 + - FUTURE_USE_3 + - FUTURE_USE_4 + - FUTURE_USE_5 + - observables + - observables_0 + - observables_1 + - observables_2 + diff --git a/data-prepper-plugins/opensearch-api-source/README.md b/data-prepper-plugins/opensearch-api-source/README.md new file mode 100644 index 0000000000..7b6ec28da7 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/README.md @@ -0,0 +1,129 @@ +# OpenSearch API Source + +This is a source plugin that supports HTTP protocol. It supports [OpenSearch Bulk Document API](https://opensearch.org/docs/latest/api-reference/document-apis/bulk/). All the paths and HTTP methods for [Bulk API operation](https://opensearch.org/docs/latest/api-reference/document-apis/bulk/#path-and-http-methods) are supported. It will also support optional [bulk URL parameters](https://opensearch.org/docs/latest/api-reference/document-apis/bulk/#url-parameters). + +## Usages +To get started with OpenSearch API source, create the following `pipeline.yaml` configuration: +```yaml +source: + opensearch_api: +``` + +### Response status + +* `200`: the request data has been successfully written into the buffer. +* `400`: the request data is either in mal-format or unsupported codec. +* `408`: the request data fails to be written into the buffer within the timeout. +* `413`: the request data size is larger than the configured capacity. +* `429`: the request has been rejected due to the OpenSearch API source executor being in full capacity. + +## Configurations + +* port (Optional) => An `int` between 0 and 65535 represents the port source is running on. Default is ```9202```. +* path (Optional) => A `string` which represents the URI path for endpoint invocation. It should start with `/` and length should be at least 1. Path can contain `${pipelineName}` placeholder which will be replaced with pipeline name. Default value is `/opensearch`. +* health_check_service (Optional) => A `boolean` that determines if a `/health` endpoint on the defined port will be home to a health check. Default is `false` +* unauthenticated_health_check (Optional) => A `boolean` that determines if the health endpoint will require authentication. This option is ignored if no authentication is defined. Default is `false` +* request_timeout (Optional) => An `int` larger than 0 represents request timeout in millis. Default is ```10_000```. +* thread_count (Optional) => An `int` larger than 0 represents the number of threads to keep in the ScheduledThreadPool. Default is `200`. +* max_connection_count (Optional) => An `int` larger than 0 represents the maximum allowed number of open connections. Default is `500`. +* max_pending_requests (Optional) => An `int` larger than 0 represents the maximum allowed number of tasks in the ScheduledThreadPool work queue. Default is `1024`. +* authentication (Optional) => An authentication configuration. By default, this runs an unauthenticated server. See below for more information. +* compression (Optional) : The compression type applied on the client request payload. Defaults to `none`. Supported values are: + * `none`: no compression + * `gzip`: apply GZip de-compression on the incoming request. + +### Authentication Configurations + +By default, the OpenSearch API source input is unauthenticated. + +The following is an example of how to run the server with HTTP Basic authentication: + +```yaml +source: + opensearch_api: + authentication: + http_basic: + username: my-user + password: my_s3cr3t +``` + +You can also explicitly disable authentication with: + +```yaml +source: + opensearch_api: + authentication: + unauthenticated: +``` + +This plugin uses pluggable authentication for HTTP servers. To provide custom authentication, +create a plugin which implements [`ArmeriaHttpAuthenticationProvider`](../armeria-common/src/main/java/org/opensearch/dataprepper/armeria/authentication/ArmeriaHttpAuthenticationProvider.java) + + +### SSL + +* ssl(Optional) => A `boolean` that enables TLS/SSL. Default is ```false```. +* ssl_certificate_file(Optional) => A `String` that represents the SSL certificate chain file path or AWS S3 path. S3 path example `s3:///`. Required if `ssl` is set to `true` and `use_acm_certificate_for_ssl` is set to `false`. +* ssl_key_file(Optional) => A `String` that represents the SSL key file path or AWS S3 path. S3 path example `s3:///`. Only decrypted key file is supported. Required if `ssl` is set to `true` and `use_acm_certificate_for_ssl` is set to `false`. +* use_acm_certificate_for_ssl(Optional) : A `boolean` that enables TLS/SSL using certificate and private key from AWS Certificate Manager (ACM). Default is `false`. +* acm_certificate_arn(Optional) : A `String` that represents the ACM certificate ARN. ACM certificate take preference over S3 or local file system certificate. Required if `use_acm_certificate_for_ssl` is set to `true`. +* acm_private_key_password(Optional): A `String` that represents the ACM private key password which that will be used to decrypt the private key. If it's not provided, a random password will be generated. +* acm_certificate_timeout_millis(Optional) : An `int` that represents the timeout in milliseconds for ACM to get certificates. Default value is `120000`. +* aws_region(Optional) : A `String` that represents the AWS region to use `ACM`, `S3`. Required if `use_acm_certificate_for_ssl` is set to `true` or `ssl_certificate_file` and `ssl_key_file` is `AWS S3`. + +### Example to enable SSL using OpenSSL + +Create the following OpenSearch API source configuration in your `pipeline.yaml`. + +```yaml +source: + opensearch_api: + ssl: true + ssl_certificate_file: "/full/path/to/certfile.crt" + ssl_key_file: "/full/path/to/keyfile.key" +``` + +Generate a private key named `keyfile.key`, along with a self-signed certificate file named `certfile.crt`. + +``` +openssl req -nodes -new -x509 -keyout keyfile.key -out certfile.crt -subj "/L=test/O=Example Com Inc./OU=Example Com Inc. Root CA/CN=Example Com Inc. Root CA" +``` + +Make sure to replace the paths for the `ssl_certificate_file` and `ssl_key_file` for the OpenSearch API source configuration with the actual paths of the files. + +- Use the following command to send a sample index action on the Bulk API request by setting the index `index = movies` in the body of the request. + +``` +curl -k -XPOST -H "Content-Type: application/json" -d '{ "index": { "_index": "movies", "_id": "tt1979320" } } +{ "title": "Rush", "year": 2013}' +http://localhost:9202/opensearch/_bulk +``` + +- Alternatively, use the following command to set the index `index = movies` in the path +``` +curl -k -XPOST -H "Content-Type: application/json" -d '{ "index": { "_index": "movies", "_id": "tt1979320" } } +{ "title": "Rush", "year": 2013}' +http://localhost:9202/opensearch/movies/_bulk +``` + +# Metrics + +### Counter +- `requestsReceived`: measures total number of requests received by `/opensearch` endpoint. +- `requestsRejected`: measures total number of requests rejected (429 response status code) by OpenSearch API source plugin. +- `successRequests`: measures total number of requests successfully processed (200 response status code) by OpenSearch API source plugin. +- `badRequests`: measures total number of requests with invalid content type or format processed by OpenSearch API source plugin (400 response status code). +- `requestTimeouts`: measures total number of requests that time out in the OpenSearch API source server (415 response status code). +- `requestsTooLarge`: measures total number of requests of which the events size in the content is larger than the buffer capacity (413 response status code). +- `internalServerError`: measures total number of requests processed by the OpenSearch API source with custom exception type (500 response status code). + +### Timer +- `requestProcessDuration`: measures latency of requests processed by the OpenSearch API source plugin in seconds. + +### Distribution Summary +- `payloadSize`: measures the distribution of incoming requests payload sizes in bytes. + +## Developer Guide +This plugin is compatible with Java 14. See +- [CONTRIBUTING](https://github.com/opensearch-project/data-prepper/blob/main/CONTRIBUTING.md) +- [monitoring](https://github.com/opensearch-project/data-prepper/blob/main/docs/monitoring.md) diff --git a/data-prepper-plugins/opensearch-api-source/build.gradle b/data-prepper-plugins/opensearch-api-source/build.gradle new file mode 100644 index 0000000000..2326bb4bab --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/build.gradle @@ -0,0 +1,38 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +plugins { + id 'java' +} + +dependencies { + implementation project(':data-prepper-api') + implementation project(':data-prepper-plugins:blocking-buffer') + implementation project(':data-prepper-plugins:http-source-common') + implementation project(':data-prepper-plugins:common') + implementation project(':data-prepper-plugins:armeria-common') + implementation libs.armeria.core + implementation libs.commons.io + implementation libs.commons.lang3 + implementation 'software.amazon.awssdk:acm' + implementation 'software.amazon.awssdk:s3' + implementation 'software.amazon.awssdk:apache-client' + testImplementation project(':data-prepper-test-common') + testImplementation project(':data-prepper-api').sourceSets.test.output + testImplementation 'org.assertj:assertj-core:3.25.3' + compileOnly 'org.projectlombok:lombok:1.18.20' + annotationProcessor 'org.projectlombok:lombok:1.18.20' +} + +jacocoTestCoverageVerification { + dependsOn jacocoTestReport + violationRules { + rule { //in addition to core projects rule + limit { + minimum = 1.0 + } + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPIService.java b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPIService.java new file mode 100644 index 0000000000..90cb77a21f --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPIService.java @@ -0,0 +1,205 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.opensearchapi; + +import com.linecorp.armeria.common.AggregatedHttpRequest; +import com.linecorp.armeria.common.HttpData; +import com.linecorp.armeria.common.HttpResponse; +import com.linecorp.armeria.common.HttpStatus; +import com.linecorp.armeria.common.annotation.Nullable; +import com.linecorp.armeria.server.ServiceRequestContext; +import com.linecorp.armeria.server.annotation.Blocking; +import com.linecorp.armeria.server.annotation.Param; +import com.linecorp.armeria.server.annotation.Post; +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.DistributionSummary; +import io.micrometer.core.instrument.Timer; +import org.apache.commons.lang3.StringUtils; +import org.opensearch.dataprepper.http.BaseHttpService; +import org.opensearch.dataprepper.http.codec.MultiLineJsonCodec; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventType; +import org.opensearch.dataprepper.model.event.JacksonEvent; +import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.source.opensearchapi.model.BulkAPIEventMetadataKeyAttributes; +import org.opensearch.dataprepper.plugins.source.opensearchapi.model.BulkAPIRequestParams; +import org.opensearch.dataprepper.plugins.source.opensearchapi.model.BulkActionAndMetadataObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/* + * OpenSearch API Service class is responsible for handling bulk API requests. + * The bulk API is responsible for 1/ parsing the request body, 2/ validating against the schema for Document API (Bulk) and finally creating data prepper events. + * Bulk API supports query parameters "pipeline", "routing" and "refresh" + */ +@Blocking +public class OpenSearchAPIService implements BaseHttpService { + + //TODO: Will need to revisit the metrics per API endpoint + public static final String REQUESTS_RECEIVED = "RequestsReceived"; + public static final String SUCCESS_REQUESTS = "SuccessRequests"; + public static final String PAYLOAD_SIZE = "PayloadSize"; + public static final String REQUEST_PROCESS_DURATION = "requestProcessDuration"; + + private static final Logger LOG = LoggerFactory.getLogger(OpenSearchAPIService.class); + + // TODO: support other data-types as request body, e.g. json_lines, msgpack + private final MultiLineJsonCodec jsonCodec = new MultiLineJsonCodec(); + private final Buffer> buffer; + private final int bufferWriteTimeoutInMillis; + private final Counter requestsReceivedCounter; + private final Counter successRequestsCounter; + private final DistributionSummary payloadSizeSummary; + private final Timer requestProcessDuration; + + public OpenSearchAPIService(final int bufferWriteTimeoutInMillis, final Buffer> buffer, final PluginMetrics pluginMetrics) { + this.buffer = buffer; + this.bufferWriteTimeoutInMillis = bufferWriteTimeoutInMillis; + + //TODO: Will need to revisit the metrics per API endpoint + requestsReceivedCounter = pluginMetrics.counter(REQUESTS_RECEIVED); + successRequestsCounter = pluginMetrics.counter(SUCCESS_REQUESTS); + payloadSizeSummary = pluginMetrics.summary(PAYLOAD_SIZE); + requestProcessDuration = pluginMetrics.timer(REQUEST_PROCESS_DURATION); + } + + @Post("/_bulk") + public HttpResponse doPostBulk(final ServiceRequestContext serviceRequestContext, final AggregatedHttpRequest aggregatedHttpRequest, + @Param("pipeline") @Nullable String pipeline, + @Param("routing") @Nullable String routing) throws Exception { + + BulkAPIRequestParams bulkAPIRequestParams = BulkAPIRequestParams.builder() + .pipeline(pipeline) + .routing(routing) + .build(); + return requestProcessDuration.recordCallable(() -> processBulkRequest(serviceRequestContext, aggregatedHttpRequest, bulkAPIRequestParams)); + } + + @Post("/{index}/_bulk") + public HttpResponse doPostBulkIndex(final ServiceRequestContext serviceRequestContext, final AggregatedHttpRequest aggregatedHttpRequest, + @Param("index") String index, + @Param("pipeline") @Nullable String pipeline, + @Param("routing") @Nullable String routing) throws Exception { + BulkAPIRequestParams bulkAPIRequestParams = BulkAPIRequestParams.builder() + .index(index) + .pipeline(pipeline) + .routing(routing) + .build(); + return requestProcessDuration.recordCallable(() -> processBulkRequest(serviceRequestContext, aggregatedHttpRequest, bulkAPIRequestParams)); + } + + private HttpResponse processBulkRequest(final ServiceRequestContext serviceRequestContext, final AggregatedHttpRequest aggregatedHttpRequest, final BulkAPIRequestParams bulkAPIRequestParams) throws Exception { + requestsReceivedCounter.increment(); + payloadSizeSummary.record(aggregatedHttpRequest.content().length()); + + if (serviceRequestContext.isTimedOut()) { + return HttpResponse.of(HttpStatus.REQUEST_TIMEOUT); + } + + final HttpData content = aggregatedHttpRequest.content(); + List> bulkRequestPayloadList; + + // parse the request payload + try { + bulkRequestPayloadList = jsonCodec.parse(content); + } catch (IOException e) { + LOG.error("Failed to parse the request of size {} due to: {}", content.length(), e.getMessage()); + throw new IOException("Bad request data format.", e.getCause()); + } + + try { + if (buffer.isByteBuffer()) { + buffer.writeBytes(content.array(), null, bufferWriteTimeoutInMillis); + } else { + List> records = generateEventsFromBulkRequest(bulkRequestPayloadList, bulkAPIRequestParams); + buffer.writeAll(records, bufferWriteTimeoutInMillis); + } + } catch (Exception e) { + LOG.error("Failed to write the request of size {} due to: {}", content.length(), e.getMessage()); + throw e; + } + successRequestsCounter.increment(); + return HttpResponse.of(HttpStatus.OK); + } + + private boolean isValidBulkAction(Map actionMap) { + return Arrays.stream(OpenSearchBulkActions.values()) + .anyMatch(bulkAction -> actionMap.containsKey(bulkAction.toString())); + } + + private List> generateEventsFromBulkRequest(final List> bulkRequestPayloadList, final BulkAPIRequestParams bulkAPIRequestParams) throws Exception { + List> records = new ArrayList<>(); + Iterator> bulkRequestPayloadListIterator = bulkRequestPayloadList.iterator(); + + while (bulkRequestPayloadListIterator.hasNext()) { + Map actionMetadataRow = bulkRequestPayloadListIterator.next(); + if (!isValidBulkAction(actionMetadataRow)) { + throw new IOException("Invalid request data."); + } + + BulkActionAndMetadataObject bulkActionAndMetadataObject = new BulkActionAndMetadataObject(actionMetadataRow); + final boolean isDeleteAction = bulkActionAndMetadataObject.getAction().equals(OpenSearchBulkActions.DELETE.toString()); + Map documentDataObject = null; + if (!isDeleteAction) { + if (!bulkRequestPayloadListIterator.hasNext()) { + throw new IOException("Invalid request data."); + } + documentDataObject = bulkRequestPayloadListIterator.next(); + // Performing another validation check to make sure that the doc row is not a valid action row + if (isValidBulkAction(documentDataObject)) { + throw new IOException("Invalid request data."); + } + } + final JacksonEvent event = createBulkRequestActionEvent(bulkActionAndMetadataObject, bulkAPIRequestParams, documentDataObject); + records.add(new Record<>(event)); + } + + return records; + } + + private JacksonEvent createBulkRequestActionEvent( + final BulkActionAndMetadataObject bulkActionAndMetadataObject, + final BulkAPIRequestParams bulkAPIRequestParams, Map optionalDocumentData) { + + final JacksonEvent.Builder eventBuilder = JacksonEvent.builder().withEventType(EventType.DOCUMENT.toString()); + if (optionalDocumentData != null) { + eventBuilder.withData(optionalDocumentData); + } + final JacksonEvent event = eventBuilder.build(); + + final String index = !StringUtils.isEmpty(bulkAPIRequestParams.getIndex()) ? bulkAPIRequestParams.getIndex() : bulkActionAndMetadataObject.getIndex(); + + event.getMetadata().setAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ACTION, bulkActionAndMetadataObject.getAction()); + event.getMetadata().setAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_INDEX, index); + + String docId = bulkActionAndMetadataObject.getDocId(); + if (!StringUtils.isBlank(docId) && !StringUtils.isEmpty(docId)) { + event.getMetadata().setAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ID, docId); + } + + String pipeline = bulkAPIRequestParams.getPipeline(); + if (!StringUtils.isBlank(pipeline) && !StringUtils.isEmpty(pipeline)) { + event.getMetadata().setAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_PIPELINE, pipeline); + } + + String routing = bulkAPIRequestParams.getRouting(); + if (!StringUtils.isBlank(routing) && !StringUtils.isEmpty(routing)) { + event.getMetadata().setAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ROUTING, routing); + } + + return event; + } +} diff --git a/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISource.java b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISource.java new file mode 100644 index 0000000000..9bfa1a9c53 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISource.java @@ -0,0 +1,41 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.opensearchapi; + +import org.opensearch.dataprepper.http.BaseHttpService; +import org.opensearch.dataprepper.http.BaseHttpSource; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.source.Source; +import org.slf4j.LoggerFactory; + +@DataPrepperPlugin(name = "opensearch_api", pluginType = Source.class, pluginConfigurationType = OpenSearchAPISourceConfig.class) +public class OpenSearchAPISource extends BaseHttpSource> { + private static final String SOURCE_NAME = "OpenSearch API"; + private static final String HTTP_HEALTH_CHECK_PATH = "/"; + + @DataPrepperPluginConstructor + public OpenSearchAPISource(final OpenSearchAPISourceConfig sourceConfig, final PluginMetrics pluginMetrics, final PluginFactory pluginFactory, + final PipelineDescription pipelineDescription) { + super(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription, SOURCE_NAME, LoggerFactory.getLogger(OpenSearchAPISource.class)); + } + + @Override + public BaseHttpService getHttpService(final int bufferWriteTimeoutInMillis, final Buffer> buffer, final PluginMetrics pluginMetrics) { + return new OpenSearchAPIService(bufferWriteTimeoutInMillis, buffer, pluginMetrics); + } + + @Override + public String getHttpHealthCheckPath() { + return HTTP_HEALTH_CHECK_PATH; + } +} diff --git a/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceConfig.java b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceConfig.java new file mode 100644 index 0000000000..b56b924288 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceConfig.java @@ -0,0 +1,29 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.opensearchapi; + +import org.opensearch.dataprepper.http.BaseHttpServerConfig; + +public class OpenSearchAPISourceConfig extends BaseHttpServerConfig { + + static final String DEFAULT_ENDPOINT_URI = "/"; + static final int DEFAULT_PORT = 9200; + + @Override + public int getDefaultPort() { + return DEFAULT_PORT; + } + + @Override + public String getDefaultPath() { + return DEFAULT_ENDPOINT_URI; + } + + @Override + public boolean hasHealthCheckService() { + return false; + } +} diff --git a/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIEventMetadataKeyAttributes.java b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIEventMetadataKeyAttributes.java new file mode 100644 index 0000000000..2313167358 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIEventMetadataKeyAttributes.java @@ -0,0 +1,10 @@ +package org.opensearch.dataprepper.plugins.source.opensearchapi.model; + +public class BulkAPIEventMetadataKeyAttributes { + + public static final String BULK_API_EVENT_METADATA_ATTRIBUTE_ACTION = "opensearch_action"; + public static final String BULK_API_EVENT_METADATA_ATTRIBUTE_INDEX = "opensearch_index"; + public static final String BULK_API_EVENT_METADATA_ATTRIBUTE_ID = "opensearch_id"; + public static final String BULK_API_EVENT_METADATA_ATTRIBUTE_PIPELINE = "opensearch_pipeline"; + public static final String BULK_API_EVENT_METADATA_ATTRIBUTE_ROUTING = "opensearch_routing"; +} diff --git a/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIRequestParams.java b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIRequestParams.java new file mode 100644 index 0000000000..71979e0b43 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIRequestParams.java @@ -0,0 +1,14 @@ +package org.opensearch.dataprepper.plugins.source.opensearchapi.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@AllArgsConstructor +@Getter +@Builder +public class BulkAPIRequestParams { + private final String index; + private final String pipeline; + private final String routing; +} diff --git a/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkActionAndMetadataObject.java b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkActionAndMetadataObject.java new file mode 100644 index 0000000000..71eda44b76 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/main/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkActionAndMetadataObject.java @@ -0,0 +1,41 @@ +package org.opensearch.dataprepper.plugins.source.opensearchapi.model; + +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; + +public class BulkActionAndMetadataObject { + @Getter + private String action; + + private Map requestModel; + private static final String emptyStringLiteral = ""; + + public BulkActionAndMetadataObject(Map requestModel) { + this.requestModel = requestModel; + this.action = isRequestModelValid() ? + requestModel.keySet().stream().findFirst().orElse(emptyStringLiteral) : emptyStringLiteral; + } + + public String getDocId() { + return getKeyInNestedMap("_id"); + } + public String getIndex() { + return getKeyInNestedMap("_index"); + } + + private String getKeyInNestedMap(final String key) { + if (!isRequestModelValid()) return emptyStringLiteral; + + Object apiAttributesMap = requestModel.getOrDefault(this.action, new HashMap()); + if (!(apiAttributesMap instanceof Map)) return emptyStringLiteral; + + return ((Map) apiAttributesMap).getOrDefault(key, emptyStringLiteral); + } + + private boolean isRequestModelValid() { + return requestModel != null && !requestModel.isEmpty(); + } + +} diff --git a/data-prepper-plugins/http-source/src/test/resources/test_cert.crt b/data-prepper-plugins/opensearch-api-source/src/main/resources/test_cert.crt similarity index 100% rename from data-prepper-plugins/http-source/src/test/resources/test_cert.crt rename to data-prepper-plugins/opensearch-api-source/src/main/resources/test_cert.crt diff --git a/data-prepper-plugins/http-source/src/test/resources/test_decrypted_key.key b/data-prepper-plugins/opensearch-api-source/src/main/resources/test_decrypted_key.key similarity index 100% rename from data-prepper-plugins/http-source/src/test/resources/test_decrypted_key.key rename to data-prepper-plugins/opensearch-api-source/src/main/resources/test_decrypted_key.key diff --git a/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPIServiceTest.java b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPIServiceTest.java new file mode 100644 index 0000000000..28a567c4f4 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPIServiceTest.java @@ -0,0 +1,442 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.opensearchapi; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.linecorp.armeria.common.AggregatedHttpRequest; +import com.linecorp.armeria.common.AggregatedHttpResponse; +import com.linecorp.armeria.common.HttpData; +import com.linecorp.armeria.common.HttpMethod; +import com.linecorp.armeria.common.HttpRequest; +import com.linecorp.armeria.common.HttpResponse; +import com.linecorp.armeria.common.HttpStatus; +import com.linecorp.armeria.common.MediaType; +import com.linecorp.armeria.common.RequestHeaders; +import com.linecorp.armeria.server.ServiceRequestContext; +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.DistributionSummary; +import io.micrometer.core.instrument.Timer; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.ArgumentCaptor; +import org.mockito.ArgumentMatchers; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.stubbing.Answer; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.buffer.SizeOverflowException; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.plugins.buffer.blockingbuffer.BlockingBuffer; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class OpenSearchAPIServiceTest { + private static final ObjectMapper mapper = new ObjectMapper(); + private static final int TEST_BUFFER_CAPACITY = 15; + private static final int TEST_TIMEOUT_IN_MILLIS = 500; + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private Counter requestsReceivedCounter; + + @Mock + private Counter successRequestsCounter; + + @Mock + private DistributionSummary payloadSizeSummary; + + @Mock + private Timer requestProcessDuration; + + @Mock + private ServiceRequestContext serviceRequestContext; + + private OpenSearchAPIService openSearchAPIService; + + @BeforeEach + public void setUp() throws Exception { + lenient().when(pluginMetrics.counter(openSearchAPIService.REQUESTS_RECEIVED)).thenReturn(requestsReceivedCounter); + lenient().when(pluginMetrics.counter(openSearchAPIService.SUCCESS_REQUESTS)).thenReturn(successRequestsCounter); + lenient().when(pluginMetrics.summary(openSearchAPIService.PAYLOAD_SIZE)).thenReturn(payloadSizeSummary); + lenient().when(pluginMetrics.timer(openSearchAPIService.REQUEST_PROCESS_DURATION)).thenReturn(requestProcessDuration); + lenient().when(serviceRequestContext.isTimedOut()).thenReturn(false); + lenient().when(requestProcessDuration.recordCallable(ArgumentMatchers.>any())).thenAnswer( + (Answer) invocation -> { + final Object[] args = invocation.getArguments(); + @SuppressWarnings("unchecked") final Callable callable = (Callable) args[0]; + return callable.call(); + } + ); + + Buffer> blockingBuffer = new BlockingBuffer<>(TEST_BUFFER_CAPACITY, 8, "test-pipeline"); + openSearchAPIService = new OpenSearchAPIService(TEST_TIMEOUT_IN_MILLIS, blockingBuffer, pluginMetrics); + } + + @ParameterizedTest + @CsvSource(value = { + "false, null, null, null", + "false, null, \"\", \"\"", + "false, null, \" \", \" \"", + "false, null, \"pipeline-1\", \"routing-1\"", + "false, \"index-1\", \"pipeline-1\", \"routing-1\"", + "true, null, null, null", + "true, null, \"\", \"\"", + "true, null, \" \", \" \"", + "true, null, \"pipeline-1\", \"routing-1\"", + "true, \"index-1\", \"pipeline-1\", \"routing-1\"" + }) + public void testBulkRequestAPIWithQueryParams(boolean testBulkRequestAPIWithIndexInPath, final String index, final String pipeline, final String routing) throws Exception { + + AggregatedHttpRequest testRequest; + AggregatedHttpResponse postResponse; + + if (testBulkRequestAPIWithIndexInPath) { + // Prepare + testRequest = generateRandomValidBulkRequestWithNoIndexInBody(2); + // When + postResponse = openSearchAPIService.doPostBulkIndex(serviceRequestContext, testRequest, index, + pipeline, routing).aggregate().get(); + } else { + // Prepare + testRequest = generateRandomValidBulkRequest(2); + // When + postResponse = openSearchAPIService.doPostBulk(serviceRequestContext, testRequest, + pipeline, routing).aggregate().get(); + } + + // Then + assertEquals(HttpStatus.OK, postResponse.status()); + verify(requestsReceivedCounter, times(1)).increment(); + verify(successRequestsCounter, times(1)).increment(); + final ArgumentCaptor payloadLengthCaptor = ArgumentCaptor.forClass(Double.class); + verify(payloadSizeSummary, times(1)).record(payloadLengthCaptor.capture()); + assertEquals(testRequest.content().length(), Math.round(payloadLengthCaptor.getValue())); + verify(requestProcessDuration, times(1)).recordCallable(ArgumentMatchers.>any()); + } + + @ParameterizedTest + @CsvSource(value = { + "false, null, null, null", + "false, null, \"\", \"\"", + "false, null, \" \", \" \"", + "false, null, \"pipeline-1\", \"routing-1\"", + "false, \"index-1\", \"pipeline-1\", \"routing-1\"", + "true, null, null, null", + "true, null, \"\", \"\"", + "true, null, \" \", \" \"", + "true, null, \"pipeline-1\", \"routing-1\"", + "true, \"index-1\", \"pipeline-1\", \"routing-1\"" + }) + public void testBulkRequestAPISuccessWithMultipleBulkActions(boolean testBulkRequestAPIWithIndexInPath, final String index, final String pipeline, final String routing) throws Exception { + // Prepare + AggregatedHttpRequest testRequest = generateGoodBulkRequestWithMultipleActions(2); + + // When + + AggregatedHttpResponse postResponse; + if (testBulkRequestAPIWithIndexInPath) { + postResponse = openSearchAPIService.doPostBulkIndex(serviceRequestContext, testRequest, index, + pipeline, routing).aggregate().get(); + } else { + postResponse = openSearchAPIService.doPostBulk(serviceRequestContext, testRequest, + pipeline, routing).aggregate().get(); + } + + // Then + assertEquals(HttpStatus.OK, postResponse.status()); + verify(requestsReceivedCounter, times(1)).increment(); + verify(successRequestsCounter, times(1)).increment(); + final ArgumentCaptor payloadLengthCaptor = ArgumentCaptor.forClass(Double.class); + verify(payloadSizeSummary, times(1)).record(payloadLengthCaptor.capture()); + assertEquals(testRequest.content().length(), Math.round(payloadLengthCaptor.getValue())); + verify(requestProcessDuration, times(1)).recordCallable(ArgumentMatchers.>any()); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIWithByteBuffer(boolean testBulkRequestAPIWithIndexInPath) throws Exception { + Buffer> blockingBuffer = mock(BlockingBuffer.class); + OpenSearchAPIService openSearchAPIService = new OpenSearchAPIService(TEST_TIMEOUT_IN_MILLIS, blockingBuffer, pluginMetrics); + when(blockingBuffer.isByteBuffer()).thenReturn(true); + + AggregatedHttpRequest testRequest = generateGoodBulkRequestWithMultipleActions(2); + if (testBulkRequestAPIWithIndexInPath) { + openSearchAPIService.doPostBulkIndex(serviceRequestContext, testRequest, null, + null, null).aggregate().get(); + } else { + openSearchAPIService.doPostBulk(serviceRequestContext, testRequest, + null, null).aggregate().get(); + } + verify(blockingBuffer, times(1)).writeBytes(eq(testRequest.content().array()), eq(null), eq(TEST_TIMEOUT_IN_MILLIS)); + } + + @Test + public void testBulkRequestAPIEmptyIndex() throws Exception { + RequestHeaders requestHeaders = RequestHeaders.builder() + .contentType(MediaType.JSON) + .method(HttpMethod.POST) + .path("/") + .build(); + List jsonList = new ArrayList<>(); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", "\t\r\n", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + HttpData httpData = HttpData.ofUtf8(String.join("\n", jsonList)); + AggregatedHttpRequest testRequest = HttpRequest.of(requestHeaders, httpData).aggregate().get(); + + Buffer> blockingBuffer = mock(BlockingBuffer.class); + OpenSearchAPIService openSearchAPIService = new OpenSearchAPIService(TEST_TIMEOUT_IN_MILLIS, blockingBuffer, pluginMetrics); + openSearchAPIService.doPostBulk(serviceRequestContext, testRequest, + null, null).aggregate().get(); + } + + @Test + public void testBulkRequestAPIInvalidRequestMissingDocRow() throws Exception { + RequestHeaders requestHeaders = RequestHeaders.builder() + .contentType(MediaType.JSON) + .method(HttpMethod.POST) + .path("/") + .build(); + List jsonList = new ArrayList<>(); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", "index", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", "index", "_id", UUID.randomUUID().toString())))); + HttpData httpData = HttpData.ofUtf8(String.join("\n", jsonList)); + AggregatedHttpRequest testRequest = HttpRequest.of(requestHeaders, httpData).aggregate().get(); + + Buffer> blockingBuffer = mock(BlockingBuffer.class); + OpenSearchAPIService openSearchAPIService = new OpenSearchAPIService(TEST_TIMEOUT_IN_MILLIS, blockingBuffer, pluginMetrics); + assertThrows(IOException.class, () -> openSearchAPIService.doPostBulk(serviceRequestContext, testRequest, + null, null).aggregate().get()); + } + + @Test + public void testBulkRequestAPIInvalidRequestEmptyDocRow() throws Exception { + RequestHeaders requestHeaders = RequestHeaders.builder() + .contentType(MediaType.JSON) + .method(HttpMethod.POST) + .path("/") + .build(); + List jsonList = new ArrayList<>(); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", "index", "_id", UUID.randomUUID().toString())))); + HttpData httpData = HttpData.ofUtf8(String.join("\n", jsonList)); + AggregatedHttpRequest testRequest = HttpRequest.of(requestHeaders, httpData).aggregate().get(); + + Buffer> blockingBuffer = mock(BlockingBuffer.class); + OpenSearchAPIService openSearchAPIService = new OpenSearchAPIService(TEST_TIMEOUT_IN_MILLIS, blockingBuffer, pluginMetrics); + assertThrows(IOException.class, () -> openSearchAPIService.doPostBulk(serviceRequestContext, testRequest, + null, null).aggregate().get()); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIBadRequestWithEmpty(boolean testBulkRequestAPIWithIndexInPath) throws Exception { + testBadRequestWithPayload(testBulkRequestAPIWithIndexInPath, ""); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIBadRequestWithInvalidPayload(boolean testBulkRequestAPIWithIndexInPath) throws Exception { + List jsonList = new ArrayList<>(); + for (int i = 0; i < 2; i++) { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Collections.singletonMap("_index", "test-index")))); + } + testBadRequestWithPayload(testBulkRequestAPIWithIndexInPath, String.join("\n", jsonList)); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIBadRequestWithEmptyMap(boolean testBulkRequestAPIWithIndexInPath) throws Exception { + List jsonList = new ArrayList<>(); + for (int i = 0; i < 2; i++) { + jsonList.add(mapper.writeValueAsString(Collections.emptyMap())); + } + testBadRequestWithPayload(testBulkRequestAPIWithIndexInPath, String.join("\n", jsonList)); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIBadRequestWithInvalidPayload2(boolean testBulkRequestAPIWithIndexInPath) throws Exception { + List jsonList = new ArrayList<>(); + for (int i = 0; i < 2; i++) { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("text", Collections.singletonMap("x", "test")))); + } + testBadRequestWithPayload(testBulkRequestAPIWithIndexInPath, String.join("\n", jsonList)); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIBadRequestWithInvalidPayload3(boolean testBulkRequestAPIWithIndexInPath) throws Exception { + List jsonList = new ArrayList<>(); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Collections.singletonMap("_index", "test-index")))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Collections.singletonMap("_index", "test-index")))); + + testBadRequestWithPayload(testBulkRequestAPIWithIndexInPath, String.join("\n", jsonList)); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIEntityTooLarge(boolean testBulkRequestAPIWithIndexInPath) throws Exception { + // Prepare + AggregatedHttpRequest testTooLargeRequest = generateRandomValidBulkRequest(TEST_BUFFER_CAPACITY + 1); + + // When + if (testBulkRequestAPIWithIndexInPath) { + assertThrows(SizeOverflowException.class, () -> openSearchAPIService.doPostBulkIndex(serviceRequestContext, testTooLargeRequest, null, + null, null).aggregate().get()); + } else { + assertThrows(SizeOverflowException.class, () -> openSearchAPIService.doPostBulk(serviceRequestContext, testTooLargeRequest, null, + null).aggregate().get()); + } + + // Then + verify(requestsReceivedCounter, times(1)).increment(); + verify(successRequestsCounter, never()).increment(); + final ArgumentCaptor payloadLengthCaptor = ArgumentCaptor.forClass(Double.class); + verify(payloadSizeSummary, times(1)).record(payloadLengthCaptor.capture()); + assertEquals(testTooLargeRequest.content().length(), Math.round(payloadLengthCaptor.getValue())); + verify(requestProcessDuration, times(1)).recordCallable(ArgumentMatchers.>any()); + } + + @Test + public void testBulkRequestWithIndexAPIRequestTimeout() throws Exception { + // Prepare + AggregatedHttpRequest populateDataRequest = generateRandomValidBulkRequest(3); + + lenient().when(serviceRequestContext.isTimedOut()).thenReturn(true); + + AggregatedHttpResponse response = openSearchAPIService.doPostBulkIndex(serviceRequestContext, populateDataRequest, null, + null, null).aggregate().get(); + assertEquals(HttpStatus.REQUEST_TIMEOUT, response.status()); + + // Then + verify(requestsReceivedCounter, times(1)).increment(); + } + + @Test + public void testBulkRequestAPIRequestTimeout() throws Exception { + // Prepare + AggregatedHttpRequest populateDataRequest = generateRandomValidBulkRequest(3); + + lenient().when(serviceRequestContext.isTimedOut()).thenReturn(true); + AggregatedHttpResponse response = openSearchAPIService.doPostBulk(serviceRequestContext, populateDataRequest, null, + null).aggregate().get(); + assertEquals(HttpStatus.REQUEST_TIMEOUT, response.status()); + + // Then + verify(requestsReceivedCounter, times(1)).increment(); + } + + private void testBadRequestWithPayload(boolean testBulkRequestAPIWithIndexInPath, String requestBody) throws Exception { + // Prepare + RequestHeaders requestHeaders = RequestHeaders.builder() + .contentType(MediaType.JSON) + .method(HttpMethod.POST) + .path("/") + .build(); + + HttpData httpData = HttpData.ofUtf8(requestBody); + AggregatedHttpRequest testBadRequest = HttpRequest.of(requestHeaders, httpData).aggregate().get(); + // When + if (testBulkRequestAPIWithIndexInPath) { + assertThrows(IOException.class, () -> openSearchAPIService.doPostBulkIndex(serviceRequestContext, testBadRequest, null, + null, null).aggregate().get()); + } else { + assertThrows(IOException.class, () -> openSearchAPIService.doPostBulk(serviceRequestContext, testBadRequest, null, + null).aggregate().get()); + } + + // Then + verify(requestsReceivedCounter, times(1)).increment(); + verify(successRequestsCounter, never()).increment(); + final ArgumentCaptor payloadLengthCaptor = ArgumentCaptor.forClass(Double.class); + verify(payloadSizeSummary, times(1)).record(payloadLengthCaptor.capture()); + assertEquals(testBadRequest.content().length(), Math.round(payloadLengthCaptor.getValue())); + verify(requestProcessDuration, times(1)).recordCallable(ArgumentMatchers.>any()); + } + + private AggregatedHttpRequest generateRandomValidBulkRequest(int numJson) throws JsonProcessingException, + ExecutionException, InterruptedException { + RequestHeaders requestHeaders = RequestHeaders.builder() + .contentType(MediaType.JSON) + .method(HttpMethod.POST) + .path("/") + .build(); + List jsonList = new ArrayList<>(); + for (int i = 0; i < numJson; i++) { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", "test-index", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + } + HttpData httpData = HttpData.ofUtf8(String.join("\n", jsonList)); + return HttpRequest.of(requestHeaders, httpData).aggregate().get(); + } + + private AggregatedHttpRequest generateRandomValidBulkRequestWithNoIndexInBody(int numJson) throws JsonProcessingException, + ExecutionException, InterruptedException { + RequestHeaders requestHeaders = RequestHeaders.builder() + .contentType(MediaType.JSON) + .method(HttpMethod.POST) + .path("/") + .build(); + List jsonList = new ArrayList<>(); + for (int i = 0; i < numJson; i++) { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + } + HttpData httpData = HttpData.ofUtf8(String.join("\n", jsonList)); + return HttpRequest.of(requestHeaders, httpData).aggregate().get(); + } + + private AggregatedHttpRequest generateGoodBulkRequestWithMultipleActions(int numJson) throws JsonProcessingException, ExecutionException, InterruptedException { + RequestHeaders requestHeaders = RequestHeaders.builder() + .contentType(MediaType.JSON) + .method(HttpMethod.POST) + .path("/") + .build(); + List jsonList = new ArrayList<>(); + for (int i = 0; i < numJson; i++) { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", "test-index", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", "", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", " ", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("delete", Map.of("_index", "test-index", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("create", Map.of("_index", "test-index", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("update", Map.of("_index", "test-index", "_id", UUID.randomUUID().toString())))); + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("log", UUID.randomUUID().toString()))); + } + HttpData httpData = HttpData.ofUtf8(String.join("\n", jsonList)); + return HttpRequest.of(requestHeaders, httpData).aggregate().get(); + } +} diff --git a/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceConfigTest.java b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceConfigTest.java new file mode 100644 index 0000000000..636bb8d66a --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceConfigTest.java @@ -0,0 +1,17 @@ +package org.opensearch.dataprepper.plugins.source.opensearchapi; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class OpenSearchAPISourceConfigTest { + @Test + void testDefault() { + // Prepare + final OpenSearchAPISourceConfig sourceConfig = new OpenSearchAPISourceConfig(); + + // When/Then + assertEquals(OpenSearchAPISourceConfig.DEFAULT_PORT, sourceConfig.getPort()); + assertEquals(OpenSearchAPISourceConfig.DEFAULT_ENDPOINT_URI, sourceConfig.getPath()); + } +} diff --git a/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceTest.java b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceTest.java new file mode 100644 index 0000000000..d02b6f3932 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/OpenSearchAPISourceTest.java @@ -0,0 +1,628 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.opensearchapi; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.linecorp.armeria.client.ClientFactory; +import com.linecorp.armeria.client.WebClient; +import com.linecorp.armeria.common.AggregatedHttpResponse; +import com.linecorp.armeria.common.HttpData; +import com.linecorp.armeria.common.HttpHeaderNames; +import com.linecorp.armeria.common.HttpMethod; +import com.linecorp.armeria.common.HttpStatus; +import com.linecorp.armeria.common.MediaType; +import com.linecorp.armeria.common.RequestHeaders; +import com.linecorp.armeria.common.SessionProtocol; +import com.linecorp.armeria.server.Server; +import com.linecorp.armeria.server.ServerBuilder; +import io.micrometer.core.instrument.Measurement; +import io.micrometer.core.instrument.Statistic; +import io.netty.util.AsciiString; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.HttpRequestExceptionHandler; +import org.opensearch.dataprepper.armeria.authentication.ArmeriaHttpAuthenticationProvider; +import org.opensearch.dataprepper.armeria.authentication.HttpBasicAuthenticationConfig; +import org.opensearch.dataprepper.http.BaseHttpSource; +import org.opensearch.dataprepper.http.LogThrottlingRejectHandler; +import org.opensearch.dataprepper.metrics.MetricNames; +import org.opensearch.dataprepper.metrics.MetricsTestUtil; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.CheckpointState; +import org.opensearch.dataprepper.model.configuration.PipelineDescription; +import org.opensearch.dataprepper.model.configuration.PluginModel; +import org.opensearch.dataprepper.model.configuration.PluginSetting; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginFactory; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.types.ByteCount; +import org.opensearch.dataprepper.plugins.HttpBasicArmeriaHttpAuthenticationProvider; +import org.opensearch.dataprepper.plugins.buffer.blockingbuffer.BlockingBuffer; +import org.opensearch.dataprepper.plugins.codec.CompressionOption; +import org.opensearch.dataprepper.plugins.source.opensearchapi.model.BulkAPIEventMetadataKeyAttributes; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; +import java.util.zip.GZIPOutputStream; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.not; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class OpenSearchAPISourceTest { + private static final ObjectMapper mapper = new ObjectMapper(); + private final String PLUGIN_NAME = "opensearch_api"; + private final String AUTHORITY = "127.0.0.1:9200"; + private final int DEFAULT_PORT = 9200; + private final int DEFAULT_REQUEST_TIMEOUT_MS = 10_000; + private final int DEFAULT_THREAD_COUNT = 200; + private final int MAX_CONNECTIONS_COUNT = 500; + private final int MAX_PENDING_REQUESTS_COUNT = 1024; + private final String TEST_SSL_CERTIFICATE_FILE = getClass().getClassLoader().getResource("test_cert.crt").getFile(); + private final String TEST_SSL_KEY_FILE = getClass().getClassLoader().getResource("test_decrypted_key.key").getFile(); + + private String testIndex; + private String testPipelineName; + private String testRoutingId; + private String testQueryParams; + + @Mock + private ServerBuilder serverBuilder; + + @Mock + private Server server; + + @Mock + private CompletableFuture completableFuture; + + private BlockingBuffer> testBuffer; + private OpenSearchAPISource openSearchAPISource; + private List requestsReceivedMeasurements; + private List successRequestsMeasurements; + private List requestTimeoutsMeasurements; + private List badRequestsMeasurements; + private List requestsTooLargeMeasurements; + private List rejectedRequestsMeasurements; + private List requestProcessDurationMeasurements; + private List payloadSizeSummaryMeasurements; + private List serverConnectionsMeasurements; + private OpenSearchAPISourceConfig sourceConfig; + private PluginMetrics pluginMetrics; + private PluginFactory pluginFactory; + private PipelineDescription pipelineDescription; + + private BlockingBuffer> getBuffer() { + final HashMap integerHashMap = new HashMap<>(); + integerHashMap.put("buffer_size", 1); + integerHashMap.put("batch_size", 1); + final PluginSetting pluginSetting = new PluginSetting("blocking_buffer", integerHashMap); + pluginSetting.setPipelineName(testPipelineName); + return new BlockingBuffer<>(pluginSetting); + } + + /** + * This method should be invoked after {@link OpenSearchAPISource::start(Buffer buffer)} to scrape metrics + */ + private void refreshMeasurements() { + final String metricNamePrefix = new StringJoiner(MetricNames.DELIMITER) + .add(testPipelineName).add(PLUGIN_NAME).toString(); + requestsReceivedMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(OpenSearchAPIService.REQUESTS_RECEIVED).toString()); + successRequestsMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(OpenSearchAPIService.SUCCESS_REQUESTS).toString()); + requestTimeoutsMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(HttpRequestExceptionHandler.REQUEST_TIMEOUTS).toString()); + badRequestsMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(HttpRequestExceptionHandler.BAD_REQUESTS).toString()); + requestsTooLargeMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(HttpRequestExceptionHandler.REQUESTS_TOO_LARGE).toString()); + rejectedRequestsMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(LogThrottlingRejectHandler.REQUESTS_REJECTED).toString()); + requestProcessDurationMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(OpenSearchAPIService.REQUEST_PROCESS_DURATION).toString()); + payloadSizeSummaryMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(OpenSearchAPIService.PAYLOAD_SIZE).toString()); + serverConnectionsMeasurements = MetricsTestUtil.getMeasurementList( + new StringJoiner(MetricNames.DELIMITER).add(metricNamePrefix) + .add(BaseHttpSource.SERVER_CONNECTIONS).toString()); + } + + private byte[] createGZipCompressedPayload(final String payload) throws IOException { + // Create a GZip compressed request body + final ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); + try (final GZIPOutputStream gzipStream = new GZIPOutputStream(byteStream)) { + gzipStream.write(payload.getBytes(StandardCharsets.UTF_8)); + } + return byteStream.toByteArray(); + } + + @BeforeEach + public void setUp() throws Exception { + lenient().when(serverBuilder.annotatedService(any())).thenReturn(serverBuilder); + lenient().when(serverBuilder.http(anyInt())).thenReturn(serverBuilder); + lenient().when(serverBuilder.https(anyInt())).thenReturn(serverBuilder); + lenient().when(serverBuilder.build()).thenReturn(server); + lenient().when(server.start()).thenReturn(completableFuture); + + sourceConfig = mock(OpenSearchAPISourceConfig.class); + lenient().when(sourceConfig.getPort()).thenReturn(DEFAULT_PORT); + lenient().when(sourceConfig.getPath()).thenReturn(OpenSearchAPISourceConfig.DEFAULT_ENDPOINT_URI); + lenient().when(sourceConfig.getRequestTimeoutInMillis()).thenReturn(DEFAULT_REQUEST_TIMEOUT_MS); + lenient().when(sourceConfig.getThreadCount()).thenReturn(DEFAULT_THREAD_COUNT); + lenient().when(sourceConfig.getMaxConnectionCount()).thenReturn(MAX_CONNECTIONS_COUNT); + lenient().when(sourceConfig.getMaxPendingRequests()).thenReturn(MAX_PENDING_REQUESTS_COUNT); + lenient().when(sourceConfig.hasHealthCheckService()).thenReturn(true); + lenient().when(sourceConfig.getCompression()).thenReturn(CompressionOption.NONE); + + MetricsTestUtil.initMetrics(); + testPipelineName = UUID.randomUUID().toString(); + pluginMetrics = PluginMetrics.fromNames(PLUGIN_NAME, testPipelineName); + + pluginFactory = mock(PluginFactory.class); + final ArmeriaHttpAuthenticationProvider authenticationProvider = new HttpBasicArmeriaHttpAuthenticationProvider(new HttpBasicAuthenticationConfig("test", "test")); + lenient().when(pluginFactory.loadPlugin(eq(ArmeriaHttpAuthenticationProvider.class), any(PluginSetting.class))) + .thenReturn(authenticationProvider); + + testBuffer = getBuffer(); + + pipelineDescription = mock(PipelineDescription.class); + lenient().when(pipelineDescription.getPipelineName()).thenReturn(testPipelineName); + + testIndex = UUID.randomUUID().toString(); + testRoutingId = UUID.randomUUID().toString(); + testQueryParams = "?pipeline=" + testPipelineName + "&routing=" + testRoutingId; + openSearchAPISource = new OpenSearchAPISource(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription); + } + + @AfterEach + public void cleanUp() { + if (openSearchAPISource != null) { + openSearchAPISource.stop(); + } + } + + private void assertSecureResponseWithStatusCode(final AggregatedHttpResponse response, final HttpStatus expectedStatus) { + assertThat("Http Status", response.status(), equalTo(expectedStatus)); + + final List headerKeys = response.headers() + .stream() + .map(Map.Entry::getKey) + .map(AsciiString::toString) + .collect(Collectors.toList()); + assertThat("Response Header Keys", headerKeys, not(contains("server"))); + } + + @ParameterizedTest + @CsvSource({"false,false", "false,true", "true,false", "true,true"}) + public void testBulkRequestAPIResponse200(boolean includeIndexInPath, boolean useQueryParams) throws IOException { + int numberOfRecords = 1; + testBulkRequestAPI200(includeIndexInPath, false, useQueryParams, numberOfRecords); + } + + @ParameterizedTest + @CsvSource({"false,false", "false,true", "true,false", "true,true"}) + public void testBulkRequestAPICompressionResponse200(boolean includeIndexInPath, boolean useQueryParams) throws IOException { + int numberOfRecords = 1; + testBulkRequestAPI200(includeIndexInPath, true, useQueryParams, numberOfRecords); + } + + @Test + public void testHealthCheck() { + // Prepare + openSearchAPISource.start(testBuffer); + + // When + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.GET) + .path("/") + .build()) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.OK)).join(); + } + + @Test + public void testHealthCheckUnauthenticatedDisabled() { + // Prepare + when(sourceConfig.isUnauthenticatedHealthCheck()).thenReturn(false); + when(sourceConfig.getAuthentication()).thenReturn(new PluginModel("http_basic", + Map.of( + "username", "test", + "password", "test" + ))); + pluginMetrics = PluginMetrics.fromNames(PLUGIN_NAME, testPipelineName); + openSearchAPISource = new OpenSearchAPISource(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription); + + openSearchAPISource.start(testBuffer); + + // When + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.GET) + .path("/") + .build()) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.UNAUTHORIZED)).join(); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestJsonResponse400WithEmptyPayload(boolean includeIndexInPath) { + // Prepare + final String testBadData = ""; //Empty body + openSearchAPISource.start(testBuffer); + refreshMeasurements(); + + // When + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + testQueryParams : "/_bulk" + testQueryParams) + .contentType(MediaType.JSON_UTF_8) + .build(), + HttpData.ofUtf8(testBadData)) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.BAD_REQUEST)).join(); + + // Then + Assertions.assertTrue(testBuffer.isEmpty()); + // Verify metrics + final Measurement requestReceivedCount = MetricsTestUtil.getMeasurementFromList( + requestsReceivedMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestReceivedCount.getValue()); + final Measurement badRequestsCount = MetricsTestUtil.getMeasurementFromList( + badRequestsMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, badRequestsCount.getValue()); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestJsonResponse400WithInvalidPayload(boolean includeIndexInPath) throws Exception { + // Prepare + List jsonList = new ArrayList<>(); + for (int i = 0; i < 2; i++) { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Collections.singletonMap("_index", "test-index")))); + } + final String testBadData = String.join("\n", jsonList); + openSearchAPISource.start(testBuffer); + refreshMeasurements(); + + // When + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + testQueryParams : "/_bulk" + testQueryParams) + .contentType(MediaType.JSON_UTF_8) + .build(), + HttpData.ofUtf8(testBadData)) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.BAD_REQUEST)).join(); + + // Then + Assertions.assertTrue(testBuffer.isEmpty()); + // Verify metrics + final Measurement requestReceivedCount = MetricsTestUtil.getMeasurementFromList( + requestsReceivedMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestReceivedCount.getValue()); + final Measurement badRequestsCount = MetricsTestUtil.getMeasurementFromList( + badRequestsMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, badRequestsCount.getValue()); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIJsonResponse413(boolean includeIndexInPath) throws JsonProcessingException { + // Prepare + final String testData = generateTestData(includeIndexInPath, 50); + final int testPayloadSize = testData.getBytes().length; + openSearchAPISource.start(testBuffer); + refreshMeasurements(); + + // When + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + testQueryParams : "/_bulk" + testQueryParams) + .contentType(MediaType.JSON_UTF_8) + .build(), + HttpData.ofUtf8(testData)) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.REQUEST_ENTITY_TOO_LARGE)).join(); + + // Then + Assertions.assertTrue(testBuffer.isEmpty()); + // Verify metrics + final Measurement requestReceivedCount = MetricsTestUtil.getMeasurementFromList( + requestsReceivedMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestReceivedCount.getValue()); + final Measurement successRequestsCount = MetricsTestUtil.getMeasurementFromList( + successRequestsMeasurements, Statistic.COUNT); + Assertions.assertEquals(0.0, successRequestsCount.getValue()); + final Measurement requestsTooLargeCount = MetricsTestUtil.getMeasurementFromList( + requestsTooLargeMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestsTooLargeCount.getValue()); + final Measurement requestProcessDurationCount = MetricsTestUtil.getMeasurementFromList( + requestProcessDurationMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestProcessDurationCount.getValue()); + final Measurement requestProcessDurationMax = MetricsTestUtil.getMeasurementFromList( + requestProcessDurationMeasurements, Statistic.MAX); + Assertions.assertTrue(requestProcessDurationMax.getValue() > 0); + final Measurement payloadSizeMax = MetricsTestUtil.getMeasurementFromList( + payloadSizeSummaryMeasurements, Statistic.MAX); + Assertions.assertEquals(testPayloadSize, payloadSizeMax.getValue()); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testBulkRequestAPIJsonResponse408(boolean includeIndexInPath) throws JsonProcessingException { + // Prepare + reset(); + final int testMaxPendingRequests = 1; + final int testThreadCount = 1; + final int serverTimeoutInMillis = 500; + final int bufferTimeoutInMillis = 400; + when(sourceConfig.getRequestTimeoutInMillis()).thenReturn(serverTimeoutInMillis); + when(sourceConfig.getBufferTimeoutInMillis()).thenReturn(bufferTimeoutInMillis); + when(sourceConfig.getMaxPendingRequests()).thenReturn(testMaxPendingRequests); + when(sourceConfig.getThreadCount()).thenReturn(testThreadCount); + openSearchAPISource = new OpenSearchAPISource(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription); + // Start the source + openSearchAPISource.start(testBuffer); + refreshMeasurements(); + final RequestHeaders testRequestHeaders = RequestHeaders.builder().scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + testQueryParams : "/_bulk" + testQueryParams) + .contentType(MediaType.JSON_UTF_8) + .build(); + final HttpData testHttpData = HttpData.ofUtf8(generateTestData(includeIndexInPath, 1)); + + // Fill in the buffer + WebClient.of().execute(testRequestHeaders, testHttpData).aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.OK)).join(); + + // Disable client timeout + WebClient testWebClient = WebClient.builder().responseTimeoutMillis(0).build(); + + // When/Then + testWebClient.execute(testRequestHeaders, testHttpData) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.REQUEST_TIMEOUT)).join(); + // verify metrics + final Measurement requestReceivedCount = MetricsTestUtil.getMeasurementFromList( + requestsReceivedMeasurements, Statistic.COUNT); + Assertions.assertEquals(2.0, requestReceivedCount.getValue()); + final Measurement successRequestsCount = MetricsTestUtil.getMeasurementFromList( + successRequestsMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, successRequestsCount.getValue()); + final Measurement requestTimeoutsCount = MetricsTestUtil.getMeasurementFromList( + requestTimeoutsMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestTimeoutsCount.getValue()); + final Measurement requestProcessDurationMax = MetricsTestUtil.getMeasurementFromList( + requestProcessDurationMeasurements, Statistic.MAX); + final double maxDurationInMillis = 1000 * requestProcessDurationMax.getValue(); + Assertions.assertTrue(maxDurationInMillis > bufferTimeoutInMillis); + } + + private void testBulkRequestAPI200(boolean includeIndexInPath, boolean useCompression, boolean useQueryParams, int numberOfRecords) throws IOException { + final String testData = generateTestData(includeIndexInPath, numberOfRecords); + final int testPayloadSize = testData.getBytes().length; + if (useCompression) { + when(sourceConfig.getCompression()).thenReturn(CompressionOption.GZIP); + } + + openSearchAPISource = new OpenSearchAPISource(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription); + openSearchAPISource.start(testBuffer); + refreshMeasurements(); + + final String queryParams = useQueryParams ? testQueryParams : ""; + // When + if (useCompression) { + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + queryParams : "/_bulk" + queryParams) + .add(HttpHeaderNames.CONTENT_ENCODING, "gzip") + .build(), + createGZipCompressedPayload(testData)) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.OK)).join(); + } else { + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + testQueryParams : "/_bulk" + testQueryParams) + .contentType(MediaType.JSON_UTF_8) + .build(), + HttpData.ofUtf8(testData)) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.OK)).join(); + } + // Then + Assertions.assertFalse(testBuffer.isEmpty()); + + final Map.Entry>, CheckpointState> result = testBuffer.read(100); + List> records = new ArrayList<>(result.getKey()); + Assertions.assertEquals(numberOfRecords, records.size()); + final Record record = records.get(0); + Assertions.assertEquals("text-data", record.getData().get("text", String.class)); + Assertions.assertEquals("index", record.getData().getMetadata().getAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ACTION)); + Assertions.assertEquals(testIndex, record.getData().getMetadata().getAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_INDEX)); + Assertions.assertEquals("123", record.getData().getMetadata().getAttribute(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ID)); + // Verify metrics + final Measurement requestReceivedCount = MetricsTestUtil.getMeasurementFromList( + requestsReceivedMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestReceivedCount.getValue()); + final Measurement successRequestsCount = MetricsTestUtil.getMeasurementFromList( + successRequestsMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, successRequestsCount.getValue()); + final Measurement requestProcessDurationCount = MetricsTestUtil.getMeasurementFromList( + requestProcessDurationMeasurements, Statistic.COUNT); + Assertions.assertEquals(1.0, requestProcessDurationCount.getValue()); + final Measurement requestProcessDurationMax = MetricsTestUtil.getMeasurementFromList( + requestProcessDurationMeasurements, Statistic.MAX); + Assertions.assertTrue(requestProcessDurationMax.getValue() > 0); + final Measurement payloadSizeMax = MetricsTestUtil.getMeasurementFromList( + payloadSizeSummaryMeasurements, Statistic.MAX); + Assertions.assertEquals(testPayloadSize, payloadSizeMax.getValue()); + Assertions.assertTrue(requestProcessDurationMax.getValue() > 0); + } + + private String generateTestData(boolean includeIndexInPath, int numberOfRecords) throws JsonProcessingException { + List jsonList = new ArrayList<>(); + for (int i = 0; i < numberOfRecords; i++) { + if (includeIndexInPath) { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_id", "123")))); + } else { + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("index", Map.of("_index", testIndex, "_id", "123")))); + } + jsonList.add(mapper.writeValueAsString(Collections.singletonMap("text", "text-data"))); + } + return String.join("\n", jsonList); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + public void testOpenSearchAPISourceServerConnectionsMetric(boolean includeIndexInPath) throws JsonProcessingException { + // Prepare + openSearchAPISource = new OpenSearchAPISource(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription); + openSearchAPISource.start(testBuffer); + refreshMeasurements(); + + // Verify connections metric value is 0 + Measurement serverConnectionsMeasurement = MetricsTestUtil.getMeasurementFromList(serverConnectionsMeasurements, Statistic.VALUE); + Assertions.assertEquals(0, serverConnectionsMeasurement.getValue()); + + final RequestHeaders testRequestHeaders = RequestHeaders.builder().scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + testQueryParams : "/_bulk" + testQueryParams) + .contentType(MediaType.JSON_UTF_8) + .build(); + final HttpData testHttpData = HttpData.ofUtf8(generateTestData(includeIndexInPath, 1)); + + // Send request + WebClient.of().execute(testRequestHeaders, testHttpData).aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.OK)).join(); + + // Verify connections metric value is 1 + serverConnectionsMeasurement = MetricsTestUtil.getMeasurementFromList(serverConnectionsMeasurements, Statistic.VALUE); + Assertions.assertEquals(1.0, serverConnectionsMeasurement.getValue()); + } + + @ParameterizedTest + @ValueSource(booleans = {false, true}) + void testBulkRequestAPIJsonResponse(boolean includeIndexInPath) throws JsonProcessingException { + reset(sourceConfig); + when(sourceConfig.getPort()).thenReturn(DEFAULT_PORT); + when(sourceConfig.getPath()).thenReturn(OpenSearchAPISourceConfig.DEFAULT_ENDPOINT_URI); + when(sourceConfig.getRequestTimeoutInMillis()).thenReturn(DEFAULT_REQUEST_TIMEOUT_MS); + when(sourceConfig.getThreadCount()).thenReturn(DEFAULT_THREAD_COUNT); + when(sourceConfig.getMaxConnectionCount()).thenReturn(MAX_CONNECTIONS_COUNT); + when(sourceConfig.getMaxPendingRequests()).thenReturn(MAX_PENDING_REQUESTS_COUNT); + when(sourceConfig.isSsl()).thenReturn(true); + when(sourceConfig.getSslCertificateFile()).thenReturn(TEST_SSL_CERTIFICATE_FILE); + when(sourceConfig.getSslKeyFile()).thenReturn(TEST_SSL_KEY_FILE); + openSearchAPISource = new OpenSearchAPISource(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription); + + testBuffer = getBuffer(); + openSearchAPISource.start(testBuffer); + + WebClient.builder().factory(ClientFactory.insecure()).build().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTPS) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path(includeIndexInPath ? "/" + testIndex + "/_bulk" + testQueryParams : "/_bulk" + testQueryParams) + .contentType(MediaType.JSON_UTF_8) + .build(), + HttpData.ofUtf8(generateTestData(includeIndexInPath, 1))) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.OK)).join(); + } + + @Test + public void request_that_exceeds_maxRequestLength_returns_413() throws JsonProcessingException { + reset(sourceConfig); + when(sourceConfig.getPort()).thenReturn(DEFAULT_PORT); + when(sourceConfig.getPath()).thenReturn(OpenSearchAPISourceConfig.DEFAULT_ENDPOINT_URI); + when(sourceConfig.getRequestTimeoutInMillis()).thenReturn(10_000); + when(sourceConfig.getThreadCount()).thenReturn(200); + when(sourceConfig.getMaxConnectionCount()).thenReturn(500); + when(sourceConfig.getMaxPendingRequests()).thenReturn(1024); + when(sourceConfig.hasHealthCheckService()).thenReturn(false); + when(sourceConfig.getCompression()).thenReturn(CompressionOption.NONE); + when(sourceConfig.getMaxRequestLength()).thenReturn(ByteCount.ofBytes(4)); + openSearchAPISource = new OpenSearchAPISource(sourceConfig, pluginMetrics, pluginFactory, pipelineDescription); + // Prepare + final String testData = "" + + "{ \"index\": { \"_index\": \"test-index\", \"_id\": \"id1\" } }\n" + + "{ \"text\": \"text1\", \"year\": \"2013\" }"; + + assertThat((long) testData.getBytes().length, greaterThan(sourceConfig.getMaxRequestLength().getBytes())); + openSearchAPISource.start(testBuffer); + refreshMeasurements(); + + // When + WebClient.of().execute(RequestHeaders.builder() + .scheme(SessionProtocol.HTTP) + .authority(AUTHORITY) + .method(HttpMethod.POST) + .path("/") + .contentType(MediaType.JSON_UTF_8) + .build(), + HttpData.ofUtf8(testData)) + .aggregate() + .whenComplete((i, ex) -> assertSecureResponseWithStatusCode(i, HttpStatus.REQUEST_ENTITY_TOO_LARGE)).join(); + + // Then + Assertions.assertTrue(testBuffer.isEmpty()); + } +} diff --git a/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIEventMetadataKeyAttributesTest.java b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIEventMetadataKeyAttributesTest.java new file mode 100644 index 0000000000..a9e47fede7 --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIEventMetadataKeyAttributesTest.java @@ -0,0 +1,17 @@ +package org.opensearch.dataprepper.plugins.source.opensearchapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class BulkAPIEventMetadataKeyAttributesTest { + + @Test + public void testEventMetadataKeyAttributes() { + assertEquals(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ACTION, "opensearch_action"); + assertEquals(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_INDEX, "opensearch_index"); + assertEquals(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ID, "opensearch_id"); + assertEquals(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_PIPELINE, "opensearch_pipeline"); + assertEquals(BulkAPIEventMetadataKeyAttributes.BULK_API_EVENT_METADATA_ATTRIBUTE_ROUTING, "opensearch_routing"); + } +} diff --git a/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIRequestParamsTest.java b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIRequestParamsTest.java new file mode 100644 index 0000000000..a448b8af1f --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkAPIRequestParamsTest.java @@ -0,0 +1,42 @@ +package org.opensearch.dataprepper.plugins.source.opensearchapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +public class BulkAPIRequestParamsTest { + + private static final String testIndex = "test-index"; + private static final String testPipeline = "test-pipeline"; + private static final String testRouting = "test-routing"; + + @Test + public void testValidObjectCreated() { + BulkAPIRequestParams bulkAPIRequestParams = BulkAPIRequestParams.builder().build(); + assertNull(bulkAPIRequestParams.getIndex()); + assertNull(bulkAPIRequestParams.getPipeline()); + assertNull(bulkAPIRequestParams.getRouting()); + } + + @Test + public void testValidObjectCreatedWithNonNullFields() { + BulkAPIRequestParams bulkAPIRequestParams = BulkAPIRequestParams.builder() + .index(testIndex) + .pipeline(testPipeline) + .routing(testRouting) + .build(); + assertEquals(testIndex, bulkAPIRequestParams.getIndex()); + assertEquals(testPipeline, bulkAPIRequestParams.getPipeline()); + assertEquals(testRouting, bulkAPIRequestParams.getRouting()); + } + + @Test + public void testValidObjectCreatedWithNonNullFields2() { + BulkAPIRequestParams bulkAPIRequestParams = new BulkAPIRequestParams(testIndex, testPipeline, testRouting); + assertEquals(testIndex, bulkAPIRequestParams.getIndex()); + assertEquals(testPipeline, bulkAPIRequestParams.getPipeline()); + assertEquals(testRouting, bulkAPIRequestParams.getRouting()); + } + +} diff --git a/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkActionAndMetadataObjectTest.java b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkActionAndMetadataObjectTest.java new file mode 100644 index 0000000000..27da1d8d8f --- /dev/null +++ b/data-prepper-plugins/opensearch-api-source/src/test/java/org/opensearch/dataprepper/plugins/source/opensearchapi/model/BulkActionAndMetadataObjectTest.java @@ -0,0 +1,58 @@ +package org.opensearch.dataprepper.plugins.source.opensearchapi.model; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class BulkActionAndMetadataObjectTest { + + private final String bulkActionBodyTwoLevelMap = "{\"index\": {\"_index\": \"test-index-1\"}}"; + private final String bulkActionBodyOneLevelMap = "{\"text\": \"message-1\"}"; + private ObjectMapper objectMapper; + private static final TypeReference> MAP_TYPE_REFERENCE = new TypeReference<>() {}; + private static final String emptyStringLiteral = ""; + @BeforeEach + void setup() { + objectMapper = new ObjectMapper(); + } + + @Test + public void testDeserializedJsonToTwoLevelMap() throws Exception { + Map bulkActionBodyMap = objectMapper.readValue(bulkActionBodyTwoLevelMap, MAP_TYPE_REFERENCE); + BulkActionAndMetadataObject BulkActionAndMetadataObject = new BulkActionAndMetadataObject(bulkActionBodyMap); + assertEquals(BulkActionAndMetadataObject.getAction(), "index"); + assertEquals(BulkActionAndMetadataObject.getIndex(), "test-index-1"); + assertEquals(BulkActionAndMetadataObject.getDocId(), emptyStringLiteral); + } + + @Test + public void testDeserializedJsonToOneLevelMap() throws Exception { + Map bulkActionBodyMap = objectMapper.readValue(bulkActionBodyOneLevelMap, MAP_TYPE_REFERENCE); + BulkActionAndMetadataObject BulkActionAndMetadataObject = new BulkActionAndMetadataObject(bulkActionBodyMap); + assertEquals(BulkActionAndMetadataObject.getAction(), "text"); + assertEquals(BulkActionAndMetadataObject.getIndex(), emptyStringLiteral); + assertEquals(BulkActionAndMetadataObject.getDocId(), emptyStringLiteral); + } + + @Test + public void testDeserializedJsonToEmptyMap() { + BulkActionAndMetadataObject BulkActionAndMetadataObject = new BulkActionAndMetadataObject(new HashMap<>()); + assertEquals(BulkActionAndMetadataObject.getAction(), emptyStringLiteral); + assertEquals(BulkActionAndMetadataObject.getIndex(), emptyStringLiteral); + assertEquals(BulkActionAndMetadataObject.getDocId(), emptyStringLiteral); + } + + @Test + public void testDeserializedJsonToNullMap() { + BulkActionAndMetadataObject BulkActionAndMetadataObject = new BulkActionAndMetadataObject(null); + assertEquals(BulkActionAndMetadataObject.getAction(), emptyStringLiteral); + assertEquals(BulkActionAndMetadataObject.getIndex(), emptyStringLiteral); + assertEquals(BulkActionAndMetadataObject.getDocId(), emptyStringLiteral); + } +} diff --git a/data-prepper-plugins/opensearch/src/main/java/org/opensearch/dataprepper/plugins/sink/opensearch/BulkRetryStrategy.java b/data-prepper-plugins/opensearch/src/main/java/org/opensearch/dataprepper/plugins/sink/opensearch/BulkRetryStrategy.java index cc9c41f103..aca748b3ef 100644 --- a/data-prepper-plugins/opensearch/src/main/java/org/opensearch/dataprepper/plugins/sink/opensearch/BulkRetryStrategy.java +++ b/data-prepper-plugins/opensearch/src/main/java/org/opensearch/dataprepper/plugins/sink/opensearch/BulkRetryStrategy.java @@ -128,9 +128,11 @@ public final class BulkRetryStrategy { static class BulkOperationRequestResponse { final AccumulatingBulkRequest bulkRequest; final BulkResponse response; - public BulkOperationRequestResponse(final AccumulatingBulkRequest bulkRequest, final BulkResponse response) { + final Exception exception; + public BulkOperationRequestResponse(final AccumulatingBulkRequest bulkRequest, final BulkResponse response, final Exception exception) { this.bulkRequest = bulkRequest; this.response = response; + this.exception = exception; } AccumulatingBulkRequest getBulkRequest() { return bulkRequest; @@ -138,6 +140,9 @@ AccumulatingBulkRequest getBulkRequest() { BulkResponse getResponse() { return response; } + String getExceptionMessage() { + return exception != null ? exception.getMessage() : "-"; + } } public BulkRetryStrategy(final RequestFunction, BulkResponse> requestFunction, @@ -200,10 +205,12 @@ public void execute(final AccumulatingBulkRequest bulkRequest) throws Interrupte operationResponse = handleRetry(request, response, attempt); if (operationResponse != null) { final long delayMillis = backoff.nextDelayMillis(attempt++); + String exceptionMessage = ""; request = operationResponse.getBulkRequest(); response = operationResponse.getResponse(); + exceptionMessage = operationResponse.getExceptionMessage(); if (delayMillis < 0) { - RuntimeException e = new RuntimeException(String.format("Number of retries reached the limit of max retries (configured value %d)", maxRetries)); + RuntimeException e = new RuntimeException(String.format("Number of retries reached the limit of max retries (configured value %d. Last exception message: %s)", maxRetries, exceptionMessage)); handleFailures(request, null, e); break; } @@ -251,13 +258,13 @@ private BulkOperationRequestResponse handleRetriesAndFailures(final Accumulating for (final BulkResponseItem bulkItemResponse : bulkResponse.items()) { if(isItemInError(bulkItemResponse)) { final ErrorCause error = bulkItemResponse.error(); - LOG.warn("operation = {}, error = {}", bulkItemResponse.operationType(), error != null ? error.reason() : ""); + LOG.warn("index = {} operation = {}, error = {}", bulkItemResponse.index(), bulkItemResponse.operationType(), error != null ? error.reason() : ""); } } } } bulkRequestNumberOfRetries.increment(); - return new BulkOperationRequestResponse(bulkRequestForRetry, bulkResponse); + return new BulkOperationRequestResponse(bulkRequestForRetry, bulkResponse, exceptionFromRequest); } else { handleFailures(bulkRequestForRetry, bulkResponse, exceptionFromRequest); } @@ -273,7 +280,7 @@ private void handleFailures(final AccumulatingBulkRequest createBulkReq requestToReissue.addOperation(bulkOperation); } else if (bulkItemResponse.error() != null && VERSION_CONFLICT_EXCEPTION_TYPE.equals(bulkItemResponse.error().type())) { documentsVersionConflictErrors.increment(); - LOG.debug("Received version conflict from OpenSearch: {}", bulkItemResponse.error().reason()); + LOG.debug("Index: {}, Received version conflict from OpenSearch: {}", bulkItemResponse.index(), bulkItemResponse.error().reason()); bulkOperation.releaseEventHandle(true); } else { nonRetryableFailures.add(FailedBulkOperation.builder() @@ -368,7 +375,7 @@ private void handleFailures(final AccumulatingBulkRequest { numEventsAdded.getAndSet(numEventsAdded.get() + 1); return null; - }).when(acknowledgementSet).add(any()); + }).when(acknowledgementSet).add(any(Event.class)); doAnswer(invocation -> { Consumer consumer = invocation.getArgument(0); diff --git a/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/PitWorkerTest.java b/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/PitWorkerTest.java index dac0db3fa9..e715d54563 100644 --- a/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/PitWorkerTest.java +++ b/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/PitWorkerTest.java @@ -259,7 +259,7 @@ void run_with_acknowledgments_enabled_creates_and_deletes_pit_and_closes_that_pa doAnswer(a -> { numEventsAdded.getAndSet(numEventsAdded.get() + 1); return null; - }).when(acknowledgementSet).add(any()); + }).when(acknowledgementSet).add(any(Event.class)); doAnswer(invocation -> { Consumer consumer = invocation.getArgument(0); diff --git a/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/ScrollWorkerTest.java b/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/ScrollWorkerTest.java index ba9b32b7df..09349579e4 100644 --- a/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/ScrollWorkerTest.java +++ b/data-prepper-plugins/opensearch/src/test/java/org/opensearch/dataprepper/plugins/source/opensearch/worker/ScrollWorkerTest.java @@ -265,7 +265,7 @@ void run_with_getNextPartition_with_acknowledgments_creates_and_deletes_scroll_a doAnswer(a -> { numEventsAdded.getAndSet(numEventsAdded.get() + 1); return null; - }).when(acknowledgementSet).add(any()); + }).when(acknowledgementSet).add(any(Event.class)); doAnswer(invocation -> { Consumer consumer = invocation.getArgument(0); diff --git a/data-prepper-plugins/otel-metrics-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otelmetrics/OtelMetricsRawProcessorConfig.java b/data-prepper-plugins/otel-metrics-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otelmetrics/OtelMetricsRawProcessorConfig.java index 496df187e6..8b42ba2abf 100644 --- a/data-prepper-plugins/otel-metrics-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otelmetrics/OtelMetricsRawProcessorConfig.java +++ b/data-prepper-plugins/otel-metrics-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otelmetrics/OtelMetricsRawProcessorConfig.java @@ -13,21 +13,24 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder -@JsonClassDescription("The `otel_metrics` processor serializes a collection of `ExportMetricsServiceRequest` records " + - "sent from the [OTel metrics source](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/sources/otel-metrics-source/) into a collection of string records.") +@JsonClassDescription("The otel_metrics processor serializes a collection of ExportMetricsServiceRequest records " + + "sent from the OTel metrics source into a collection of string records.") public class OtelMetricsRawProcessorConfig { - @JsonProperty("flatten_attributes") - @JsonPropertyDescription("Whether or not to flatten the `attributes` field in the JSON data.") + @JsonProperty(value = "flatten_attributes", defaultValue = "true") + @JsonPropertyDescription("Whether or not to flatten the attributes field in the JSON data. Default value is true.") boolean flattenAttributesFlag = true; - @JsonPropertyDescription("Whether or not to calculate histogram buckets.") + @JsonProperty(defaultValue = "true") + @JsonPropertyDescription("Whether or not to calculate histogram buckets. Default value is true.") private Boolean calculateHistogramBuckets = true; - @JsonPropertyDescription("Whether or not to calculate exponential histogram buckets.") + @JsonProperty(defaultValue = "true") + @JsonPropertyDescription("Whether or not to calculate exponential histogram buckets. Default value is true.") private Boolean calculateExponentialHistogramBuckets = true; - @JsonPropertyDescription("Maximum allowed scale in exponential histogram calculation.") + @JsonProperty(defaultValue = "" + DEFAULT_EXPONENTIAL_HISTOGRAM_MAX_ALLOWED_SCALE) + @JsonPropertyDescription("Maximum allowed scale in exponential histogram calculation. By default, the maximum allowed scale is 10.") private Integer exponentialHistogramMaxAllowedScale = DEFAULT_EXPONENTIAL_HISTOGRAM_MAX_ALLOWED_SCALE; public Boolean getCalculateExponentialHistogramBuckets() { diff --git a/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsFormatOption.java b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsFormatOption.java new file mode 100644 index 0000000000..aa75e2f44d --- /dev/null +++ b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsFormatOption.java @@ -0,0 +1,40 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.otel.codec; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +public enum OTelLogsFormatOption { + JSON("json"); + + private static final Map NAMES_MAP = Arrays.stream(OTelLogsFormatOption.values()) + .collect(Collectors.toMap( + value -> value.optionName, + value -> value + )); + + private final String optionName; + + OTelLogsFormatOption(final String optionName) { + this.optionName = optionName; + } + + @JsonValue + public String getFormatName() { + return optionName; + } + + @JsonCreator + public static OTelLogsFormatOption fromFormatName(final String optionName) { + return NAMES_MAP.get(optionName); + } +} \ No newline at end of file diff --git a/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodec.java b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodec.java new file mode 100644 index 0000000000..060d911e85 --- /dev/null +++ b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodec.java @@ -0,0 +1,34 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.otel.codec; + +import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; +import org.opensearch.dataprepper.model.codec.InputCodec; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; +import java.util.function.Consumer; + +@DataPrepperPlugin(name = "otel_logs", pluginType = InputCodec.class, pluginConfigurationType = OTelLogsInputCodecConfig.class) +public class OTelLogsInputCodec implements InputCodec { + private final OTelLogsInputCodecConfig config; + + @DataPrepperPluginConstructor + public OTelLogsInputCodec(final OTelLogsInputCodecConfig config) { + Objects.requireNonNull(config); + this.config = config; + } + public void parse(InputStream inputStream, Consumer> eventConsumer) throws IOException { + if (config.getFormat() == OTelLogsFormatOption.JSON) { + OTelLogsJsonDecoder decoder = new OTelLogsJsonDecoder(); + decoder.parse(inputStream, null, eventConsumer); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodecConfig.java b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodecConfig.java new file mode 100644 index 0000000000..13ff2de8a8 --- /dev/null +++ b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodecConfig.java @@ -0,0 +1,36 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.otel.codec; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.constraints.NotNull; + +import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonClassDescription; + +@JsonPropertyOrder +@JsonClassDescription("The otel_logs codec parses log files in S3 that follow the OpenTelemetry Protocol Specification. " + + "It creates a Data Prepper log event for each log record along with the resource attributes in the file.") +public class OTelLogsInputCodecConfig { + static final OTelLogsFormatOption DEFAULT_FORMAT = OTelLogsFormatOption.JSON; + + @JsonProperty(value = "format", defaultValue = "json") + @JsonPropertyDescription("Specifies the format of the OTel logs.") + @NotNull + private OTelLogsFormatOption format = DEFAULT_FORMAT; + + public OTelLogsFormatOption getFormat() { + return format; + } + + @AssertTrue(message = "format must be json.") + boolean isValidFormat() { + return format != null; + } +} \ No newline at end of file diff --git a/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsJsonDecoder.java b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsJsonDecoder.java new file mode 100644 index 0000000000..219ba3376a --- /dev/null +++ b/data-prepper-plugins/otel-proto-common/src/main/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsJsonDecoder.java @@ -0,0 +1,41 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ +package org.opensearch.dataprepper.plugins.otel.codec; + +import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest; +import org.opensearch.dataprepper.model.codec.ByteDecoder; +import org.opensearch.dataprepper.model.record.Record; + +import com.google.protobuf.util.JsonFormat; + +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.log.OpenTelemetryLog; + +import java.util.List; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.function.Consumer; +import java.time.Instant; + +public class OTelLogsJsonDecoder implements ByteDecoder { + private final OTelProtoCodec.OTelProtoDecoder otelProtoDecoder; + + public OTelLogsJsonDecoder() { + otelProtoDecoder = new OTelProtoCodec.OTelProtoDecoder(); + } + + public void parse(InputStream inputStream, Instant timeReceivedMs, Consumer> eventConsumer) throws IOException { + Reader reader = new InputStreamReader(inputStream); + ExportLogsServiceRequest.Builder builder = ExportLogsServiceRequest.newBuilder(); + JsonFormat.parser().merge(reader, builder); + ExportLogsServiceRequest request = builder.build(); + List logs = otelProtoDecoder.parseExportLogsServiceRequest(request, timeReceivedMs); + for (OpenTelemetryLog log: logs) { + eventConsumer.accept(new Record<>(log)); + } + } +} \ No newline at end of file diff --git a/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsFormatOptionTest.java b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsFormatOptionTest.java new file mode 100644 index 0000000000..29e63c37eb --- /dev/null +++ b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsFormatOptionTest.java @@ -0,0 +1,52 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.otel.codec; + +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; +import org.junit.jupiter.params.provider.EnumSource; + +import java.util.stream.Stream; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.emptyString; +import static org.junit.jupiter.params.provider.Arguments.arguments; + +class OTelLogsFormatOptionTest { + @ParameterizedTest + @EnumSource(OTelLogsFormatOption.class) + void fromFormatName_returns_expected_value(final OTelLogsFormatOption formatOption) { + assertThat(OTelLogsFormatOption.fromFormatName(formatOption.getFormatName()), equalTo(formatOption)); + } + + @ParameterizedTest + @EnumSource(OTelLogsFormatOption.class) + void getFormatName_returns_non_empty_string_for_all_types(final OTelLogsFormatOption formatOption) { + assertThat(formatOption.getFormatName(), notNullValue()); + assertThat(formatOption.getFormatName(), not(emptyString())); + } + + @ParameterizedTest + @ArgumentsSource(OTelLogsFormatOptionToKnownName.class) + void getFormatName_returns_expected_name(final OTelLogsFormatOption formatOption, final String expectedString) { + assertThat(formatOption.getFormatName(), equalTo(expectedString)); + } + + static class OTelLogsFormatOptionToKnownName implements ArgumentsProvider { + @Override + public Stream provideArguments(final ExtensionContext extensionContext) { + return Stream.of( + arguments(OTelLogsFormatOption.JSON, "json") + ); + } + } +} diff --git a/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodecTest.java b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodecTest.java new file mode 100644 index 0000000000..353756d781 --- /dev/null +++ b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsInputCodecTest.java @@ -0,0 +1,61 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.otel.codec; + +import java.io.InputStream; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.opensearch.dataprepper.model.log.OpenTelemetryLog; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +public class OTelLogsInputCodecTest { + private static final String TEST_REQUEST_LOGS_FILE = "test-request-multiple-logs.json"; + + @Mock + private OTelLogsInputCodecConfig config; + @Mock + private OTelLogsInputCodec otelLogsCodec; + + @BeforeEach + void setup() { + config = new OTelLogsInputCodecConfig(); + otelLogsCodec = createObjectUnderTest(); + } + + public OTelLogsInputCodec createObjectUnderTest() { + return new OTelLogsInputCodec(config); + } + + private void validateLog(OpenTelemetryLog logRecord) { + assertThat(logRecord.getServiceName(), is("service")); + assertThat(logRecord.getTime(), is("2020-05-24T14:00:00Z")); + assertThat(logRecord.getObservedTime(), is("2020-05-24T14:00:02Z")); + assertThat(logRecord.getBody(), is("Log value")); + assertThat(logRecord.getDroppedAttributesCount(), is(3)); + assertThat(logRecord.getSchemaUrl(), is("schemaurl")); + assertThat(logRecord.getSeverityNumber(), is(5)); + assertThat(logRecord.getSeverityText(), is("Severity value")); + assertThat(logRecord.getTraceId(), is("ba1a1c23b4093b63")); + assertThat(logRecord.getSpanId(), is("2cc83ac90ebc469c")); + Map mergedAttributes = logRecord.getAttributes(); + assertThat(mergedAttributes.keySet().size(), is(2)); + assertThat(mergedAttributes.get("log.attributes.statement@params"), is("us-east-1")); + assertThat(mergedAttributes.get("resource.attributes.service@name"), is("service")); + } + + @Test + public void testParse() throws Exception { + InputStream inputStream = OTelLogsInputCodecTest.class.getClassLoader().getResourceAsStream(TEST_REQUEST_LOGS_FILE); + otelLogsCodec.parse(inputStream, (record) -> { + validateLog((OpenTelemetryLog)record.getData()); + }); + + } +} diff --git a/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsJsonDecoderTest.java b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsJsonDecoderTest.java new file mode 100644 index 0000000000..0773bd0f48 --- /dev/null +++ b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelLogsJsonDecoderTest.java @@ -0,0 +1,48 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.otel.codec; + +import java.io.InputStream; +import java.time.Instant; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.model.log.OpenTelemetryLog; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +public class OTelLogsJsonDecoderTest { + private static final String TEST_REQUEST_LOGS_FILE = "test-request-multiple-logs.json"; + + public OTelLogsJsonDecoder createObjectUnderTest() { + return new OTelLogsJsonDecoder(); + } + + private void validateLog(OpenTelemetryLog logRecord) { + assertThat(logRecord.getServiceName(), is("service")); + assertThat(logRecord.getTime(), is("2020-05-24T14:00:00Z")); + assertThat(logRecord.getObservedTime(), is("2020-05-24T14:00:02Z")); + assertThat(logRecord.getBody(), is("Log value")); + assertThat(logRecord.getDroppedAttributesCount(), is(3)); + assertThat(logRecord.getSchemaUrl(), is("schemaurl")); + assertThat(logRecord.getSeverityNumber(), is(5)); + assertThat(logRecord.getSeverityText(), is("Severity value")); + assertThat(logRecord.getTraceId(), is("ba1a1c23b4093b63")); + assertThat(logRecord.getSpanId(), is("2cc83ac90ebc469c")); + Map mergedAttributes = logRecord.getAttributes(); + assertThat(mergedAttributes.keySet().size(), is(2)); + assertThat(mergedAttributes.get("log.attributes.statement@params"), is("us-east-1")); + assertThat(mergedAttributes.get("resource.attributes.service@name"), is("service")); + } + + @Test + public void testParse() throws Exception { + InputStream inputStream = OTelLogsJsonDecoderTest.class.getClassLoader().getResourceAsStream(TEST_REQUEST_LOGS_FILE); + createObjectUnderTest().parse(inputStream, Instant.now(), (record) -> { + validateLog((OpenTelemetryLog)record.getData()); + }); + + } +} \ No newline at end of file diff --git a/data-prepper-plugins/otel-trace-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/oteltrace/OtelTraceRawProcessorConfig.java b/data-prepper-plugins/otel-trace-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/oteltrace/OtelTraceRawProcessorConfig.java index 16b3017a81..e7217968f2 100644 --- a/data-prepper-plugins/otel-trace-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/oteltrace/OtelTraceRawProcessorConfig.java +++ b/data-prepper-plugins/otel-trace-raw-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/oteltrace/OtelTraceRawProcessorConfig.java @@ -13,24 +13,27 @@ import java.time.Duration; @JsonPropertyOrder -@JsonClassDescription("The `otel_trace` processor completes trace-group-related fields in all incoming Data Prepper " + - "span records by state caching the root span information for each `traceId`.") +@JsonClassDescription("The otel_traces processor completes trace-group-related fields in all incoming " + + "span records by state caching the root span information for each traceId.") public class OtelTraceRawProcessorConfig { static final long DEFAULT_TG_FLUSH_INTERVAL_SEC = 180L; static final Duration DEFAULT_TRACE_ID_TTL = Duration.ofSeconds(15L); static final long MAX_TRACE_ID_CACHE_SIZE = 1_000_000L; - @JsonProperty("trace_flush_interval") + + @JsonProperty(value = "trace_flush_interval", defaultValue = "180") @JsonPropertyDescription("Represents the time interval in seconds to flush all the descendant spans without any " + - "root span. Default is 180.") + "root span. Default is 180.") private long traceFlushInterval = DEFAULT_TG_FLUSH_INTERVAL_SEC; - @JsonProperty("trace_group_cache_ttl") - @JsonPropertyDescription("Represents the time-to-live to cache a trace group details. Default is 15 seconds.") + @JsonProperty(value = "trace_group_cache_ttl", defaultValue = "PT15S") + @JsonPropertyDescription("Represents the time-to-live to cache a trace group details. " + + "The value may be an ISO 8601 notation such as PT1M30S or a duration and unit such as 45s. " + + "Default is 15 seconds.") private Duration traceGroupCacheTimeToLive = DEFAULT_TRACE_ID_TTL; - @JsonProperty("trace_group_cache_max_size") + @JsonProperty(value = "trace_group_cache_max_size", defaultValue = "1000000") @JsonPropertyDescription("Represents the maximum size of the cache to store the trace group details from root spans. " + - "Default is 1000000.") + "Default is 1000000.") private long traceGroupCacheMaxSize = MAX_TRACE_ID_CACHE_SIZE; public long getTraceFlushIntervalSeconds() { diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodec.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodec.java index 6222682e2a..a7dc056105 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodec.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodec.java @@ -6,6 +6,7 @@ package org.opensearch.dataprepper.plugins.codec.json; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; +import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; import org.opensearch.dataprepper.model.codec.InputCodec; import org.opensearch.dataprepper.model.codec.JsonDecoder; import org.opensearch.dataprepper.model.event.Event; @@ -13,13 +14,20 @@ import java.io.IOException; import java.io.InputStream; +import java.util.Objects; import java.util.function.Consumer; /** * An implementation of {@link InputCodec} which parses JSON Objects for arrays. */ -@DataPrepperPlugin(name = "json", pluginType = InputCodec.class) +@DataPrepperPlugin(name = "json", pluginType = InputCodec.class, pluginConfigurationType = JsonInputCodecConfig.class) public class JsonInputCodec extends JsonDecoder implements InputCodec { + + @DataPrepperPluginConstructor + public JsonInputCodec(final JsonInputCodecConfig config) { + super(Objects.requireNonNull(config).getKeyName(), config.getIncludeKeys(), config.getIncludeKeysMetadata()); + } + public void parse(InputStream inputStream, Consumer> eventConsumer) throws IOException { parse(inputStream, null, eventConsumer); } diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecConfig.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecConfig.java new file mode 100644 index 0000000000..d25b884365 --- /dev/null +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecConfig.java @@ -0,0 +1,41 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +package org.opensearch.dataprepper.plugins.codec.json; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.Size; + +import java.util.List; + +public class JsonInputCodecConfig { + + @JsonProperty("key_name") + @Size(min = 1, max = 2048) + private String keyName; + + public String getKeyName() { + return keyName; + } + + @JsonProperty("include_keys") + private List includeKeys; + + public List getIncludeKeys() { + return includeKeys; + } + + @JsonProperty("include_keys_metadata") + private List includeKeysMetadata; + + public List getIncludeKeysMetadata() { + return includeKeysMetadata; + } +} diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonOutputCodecConfig.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonOutputCodecConfig.java index ea99a23f4a..c4597c0763 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonOutputCodecConfig.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/codec/json/JsonOutputCodecConfig.java @@ -10,11 +10,15 @@ public class JsonOutputCodecConfig { static final String DEFAULT_KEY_NAME = "events"; - @JsonProperty("key_name") + @JsonProperty(value = "key_name", defaultValue = DEFAULT_KEY_NAME) @Size(min = 1, max = 2048) private String keyName = DEFAULT_KEY_NAME; public String getKeyName() { return keyName; } + + public void setKeyName(String keyName) { + this.keyName = keyName; + } } diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/AbstractParseProcessor.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/AbstractParseProcessor.java index a22d635163..8f5e650a4f 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/AbstractParseProcessor.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/AbstractParseProcessor.java @@ -5,6 +5,7 @@ package org.opensearch.dataprepper.plugins.processor.parse; +import com.fasterxml.jackson.databind.ObjectMapper; import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; @@ -15,6 +16,9 @@ import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; import org.opensearch.dataprepper.model.processor.AbstractProcessor; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.SENSITIVE; import org.opensearch.dataprepper.model.record.Record; import io.micrometer.core.instrument.Counter; import org.slf4j.Logger; @@ -36,6 +40,8 @@ public abstract class AbstractParseProcessor extends AbstractProcessor> readValue(String message, Event context); + protected abstract Optional> readValue(String message, Event context); + + protected Map convertNestedObjectToString(Map map, int curDepth, int targetDepth) { + HashMap resultMap = new HashMap<>(); + try { + for (Map.Entry entry: map.entrySet()) { + if (entry.getValue() instanceof Map) { + if (curDepth == targetDepth) { + resultMap.put(entry.getKey(), objectMapper.writeValueAsString((Map) entry.getValue())); + } else { + resultMap.put(entry.getKey(), convertNestedObjectToString((Map) entry.getValue(), curDepth + 1, targetDepth)); + } + } else { + resultMap.put(entry.getKey(), entry.getValue()); + } + } + } catch (Exception e) { + LOG.atError() + .addMarker(SENSITIVE) + .addMarker(NOISY) + .setMessage("Failed to convert to string while parsing") + .setCause(e) + .log(); + } + return resultMap; + } @Override public Collection> doExecute(final Collection> records) { @@ -100,7 +131,7 @@ public Collection> doExecute(final Collection> recor continue; } - final Optional> parsedValueOptional = readValue(message, event); + final Optional> parsedValueOptional = readValue(message, event); if (parsedValueOptional.isEmpty()) { event.getMetadata().addTags(tagsOnFailure); continue; diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/CommonParseConfig.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/CommonParseConfig.java index f10537bc7c..d52282043a 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/CommonParseConfig.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/CommonParseConfig.java @@ -66,4 +66,9 @@ public interface CommonParseConfig { * and passing the failed Event downstream to the next processor. */ HandleFailedEventsOption getHandleFailedEventsOption(); + + /** + * An optional setting used to determine the depth of the input to handle + */ + int getDepth(); } diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessor.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessor.java index 4bfb88ded6..4d00f33eca 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessor.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessor.java @@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory; import java.util.HashMap; +import java.util.Map; import java.util.Optional; import static org.opensearch.dataprepper.logging.DataPrepperMarkers.SENSITIVE; @@ -35,6 +36,8 @@ public class ParseIonProcessor extends AbstractParseProcessor { private final Counter parseErrorsCounter; + private final int depth; + private final HandleFailedEventsOption handleFailedEventsOption; @DataPrepperPluginConstructor @@ -44,6 +47,7 @@ public ParseIonProcessor(final PluginMetrics pluginMetrics, final EventKeyFactory eventKeyFactory) { super(pluginMetrics, parseIonProcessorConfig, expressionEvaluator, eventKeyFactory); + this.depth = parseIonProcessorConfig.getDepth(); // Convert Timestamps to ISO-8601 Z strings objectMapper.registerModule(new IonTimestampConverterModule()); @@ -51,11 +55,16 @@ public ParseIonProcessor(final PluginMetrics pluginMetrics, parseErrorsCounter = pluginMetrics.counter(PARSE_ERRORS); } + @Override - protected Optional> readValue(String message, Event context) { + protected Optional> readValue(String message, Event context) { try { // We need to do a two-step process here, read the value in, then convert away any Ion types like Timestamp - return Optional.of(objectMapper.convertValue(objectMapper.readValue(message, new TypeReference<>() {}), new TypeReference<>() {})); + final HashMap map = objectMapper.convertValue(objectMapper.readValue(message, new TypeReference<>() {}), new TypeReference<>() {}); + if (depth == 0) { + return Optional.of(map); + } + return Optional.of(objectMapper.convertValue(convertNestedObjectToString(map, 1, depth), new TypeReference<>() {})); } catch (JsonProcessingException e) { if (handleFailedEventsOption.shouldLog()) { LOG.error(SENSITIVE, "An exception occurred due to invalid Ion while parsing [{}] due to {}", message, e.getMessage()); diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessorConfig.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessorConfig.java index 5e2468e7b9..68e4047a49 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessorConfig.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/ion/ParseIonProcessorConfig.java @@ -9,9 +9,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonPropertyDescription; -import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.Max; import org.opensearch.dataprepper.model.event.HandleFailedEventsOption; import org.opensearch.dataprepper.plugins.processor.parse.CommonParseConfig; @@ -19,47 +22,54 @@ import java.util.Objects; @JsonPropertyOrder -@JsonClassDescription("The `parse_ion` processor parses [Amazon Ion](https://amazon-ion.github.io/ion-docs/) data.") +@JsonClassDescription("The parse_ion processor parses Amazon Ion data.") public class ParseIonProcessorConfig implements CommonParseConfig { static final String DEFAULT_SOURCE = "message"; @NotBlank - @JsonProperty("source") - @JsonPropertyDescription("The field in the event that will be parsed. Default value is message.") + @JsonProperty(value = "source", defaultValue = DEFAULT_SOURCE) + @JsonPropertyDescription("The field in the event that will be parsed. The default value is message.") private String source = DEFAULT_SOURCE; @JsonProperty("destination") - @JsonPropertyDescription("The destination field of the parsed JSON. Defaults to the root of the event. Cannot be an empty string, /, or any white-space-only string because these are not valid event fields.") + @Pattern(regexp = "^(?!\\s*$)(?!^/$).+", message = "Cannot be an empty string, /, or any whitespace-only string") + @JsonPropertyDescription("The destination field of the structured object from the parsed ION. Defaults to the root of the event. Cannot be an empty string, /, or any whitespace-only string because these are not valid event fields.") private String destination; @JsonProperty("pointer") - @JsonPropertyDescription("A JSON pointer to the field to be parsed. There is no pointer by default, meaning the entire source is parsed. The pointer can access JSON array indexes as well. If the JSON pointer is invalid then the entire source data is parsed into the outgoing event. If the key that is pointed to already exists in the event and the destination is the root, then the pointer uses the entire path of the key.") + @JsonPropertyDescription("A JSON pointer to the field to be parsed. There is no pointer by default, meaning the entire source is parsed. The pointer can access JSON array indexes as well. " + + "If the JSON pointer is invalid then the entire source data is parsed into the outgoing event. If the key that is pointed to already exists in the event and the destination is the root, then the pointer uses the entire path of the key.") private String pointer; - @JsonProperty("parse_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), such as '/some-key == \"test\"', that will be evaluated to determine whether the processor will be run on the event.") - private String parseWhen; - - @JsonProperty("tags_on_failure") - @JsonPropertyDescription("A list of strings specifying the tags to be set in the event that the processor fails or an unknown exception occurs during parsing.") - private List tagsOnFailure; - - @JsonProperty("overwrite_if_destination_exists") + @JsonProperty(value = "overwrite_if_destination_exists", defaultValue = "true") @JsonPropertyDescription("Overwrites the destination if set to true. Set to false to prevent changing a destination value that exists. Defaults to true.") private boolean overwriteIfDestinationExists = true; @JsonProperty - @JsonPropertyDescription("If true, the configured source field will be deleted after the JSON data is parsed into separate fields.") + @JsonPropertyDescription("If true, the configured source field will be deleted after the ION data is parsed into separate fields.") private boolean deleteSource = false; - @JsonProperty("handle_failed_events") + @JsonProperty("tags_on_failure") + @JsonPropertyDescription("A list of strings specifying the tags to be set in the event that the processor fails or an unknown exception occurs during parsing.") + private List tagsOnFailure; + + @JsonProperty("parse_when") + @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), such as /some-key == \"test\", that will be evaluated to determine whether the processor will be run on the event.") + private String parseWhen; + + @JsonProperty(value = "handle_failed_events", defaultValue = "skip") @JsonPropertyDescription("Determines how to handle events with ION processing errors. Options include 'skip', " + - "which will log the error and send the Event downstream to the next processor, and 'skip_silently', " + - "which will send the Event downstream to the next processor without logging the error. " + - "Default is 'skip'.") + "which will log the error and send the event downstream to the next processor, and 'skip_silently', " + + "which will send the Event downstream to the next processor without logging the error. ") @NotNull private HandleFailedEventsOption handleFailedEventsOption = HandleFailedEventsOption.SKIP; + @JsonProperty(value = "depth", defaultValue = "0") + @Min(0) + @Max(10) + @JsonPropertyDescription("Indicates the depth at which the nested values of the event are not parsed any more. Default is 0, which means all levels of nested values are parsed. If the depth is 1, only the top level keys are parsed and all its nested values are represented as strings") + private int depth = 0; + @Override public String getSource() { return source; @@ -80,6 +90,11 @@ public List getTagsOnFailure() { return tagsOnFailure; } + @Override + public int getDepth() { + return depth; + } + @Override public String getParseWhen() { return parseWhen; } diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessor.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessor.java index 407b59fab1..7b486b14a7 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessor.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessor.java @@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory; import java.util.HashMap; +import java.util.Map; import java.util.Optional; import static org.opensearch.dataprepper.logging.DataPrepperMarkers.SENSITIVE; @@ -36,6 +37,8 @@ public class ParseJsonProcessor extends AbstractParseProcessor { private final HandleFailedEventsOption handleFailedEventsOption; private final Counter parseErrorsCounter; + private final int depth; + @DataPrepperPluginConstructor public ParseJsonProcessor(final PluginMetrics pluginMetrics, final ParseJsonProcessorConfig parseJsonProcessorConfig, @@ -43,13 +46,18 @@ public ParseJsonProcessor(final PluginMetrics pluginMetrics, final EventKeyFactory eventKeyFactory) { super(pluginMetrics, parseJsonProcessorConfig, expressionEvaluator, eventKeyFactory); this.handleFailedEventsOption = parseJsonProcessorConfig.getHandleFailedEventsOption(); + this.depth = parseJsonProcessorConfig.getDepth(); parseErrorsCounter = pluginMetrics.counter(PARSE_ERRORS); } @Override - protected Optional> readValue(String message, Event context) { + protected Optional> readValue(String message, Event context) { try { - return Optional.of(objectMapper.readValue(message, new TypeReference<>() {})); + final HashMap map = objectMapper.readValue(message, new TypeReference<>() {}); + if (depth == 0) { + return Optional.of(map); + } + return Optional.of(convertNestedObjectToString(map, 1, depth)); } catch (JsonProcessingException e) { if (handleFailedEventsOption.shouldLog()) { LOG.error(SENSITIVE, "An exception occurred due to invalid JSON while parsing [{}] due to {}", message, e.getMessage()); diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorConfig.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorConfig.java index add5ba259a..e450ac1cb0 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorConfig.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorConfig.java @@ -12,6 +12,9 @@ import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.Max; import org.opensearch.dataprepper.model.event.HandleFailedEventsOption; import org.opensearch.dataprepper.plugins.processor.parse.CommonParseConfig; @@ -19,43 +22,51 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `parse_json` processor parses JSON data for an event, including any nested fields. " + - "The processor extracts the JSON pointer data and adds the input event to the extracted fields.") +@JsonClassDescription("The parse_json processor parses JSON data from fields in events.") public class ParseJsonProcessorConfig implements CommonParseConfig { static final String DEFAULT_SOURCE = "message"; @NotBlank - @JsonProperty("source") - @JsonPropertyDescription("The field in the event that will be parsed. Default value is message.") + @JsonProperty(value = "source", defaultValue = DEFAULT_SOURCE) + @JsonPropertyDescription("The field in the event that will be parsed. The default value is message.") private String source = DEFAULT_SOURCE; @JsonProperty("destination") - @JsonPropertyDescription("The destination field of the parsed JSON. Defaults to the root of the event. Cannot be an empty string, /, or any white-space-only string because these are not valid event fields.") + @Pattern(regexp = "^(?!\\s*$)(?!^/$).+", message = "Cannot be an empty string, /, or any whitespace-only string") + @JsonPropertyDescription("The destination field of the structured object from the parsed JSON. Defaults to the root of the event. Cannot be an empty string, /, or any whitespace-only string because these are not valid event fields.") private String destination; + @JsonProperty(value = "depth", defaultValue = "0") + @Min(0) + @Max(10) + @JsonPropertyDescription("Indicates the depth at which the nested values of the event are not parsed any more. Default is 0, which means all levels of nested values are parsed. If the depth is 1, only the top level keys are parsed and all its nested values are represented as strings") + private int depth = 0; + @JsonProperty("pointer") - @JsonPropertyDescription("A JSON pointer to the field to be parsed. There is no pointer by default, meaning the entire source is parsed. The pointer can access JSON array indexes as well. If the JSON pointer is invalid then the entire source data is parsed into the outgoing event. If the key that is pointed to already exists in the event and the destination is the root, then the pointer uses the entire path of the key.") + @JsonPropertyDescription("A JSON pointer to the field to be parsed. There is no pointer by default, meaning the entire source is parsed. The pointer can access JSON array indexes as well. " + + "If the JSON pointer is invalid then the entire source data is parsed into the outgoing event. If the key that is pointed to already exists in the event and the destination is the root, then the pointer uses the entire path of the key.") private String pointer; - @JsonProperty("parse_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), such as '/some-key == \"test\"', that will be evaluated to determine whether the processor will be run on the event.") - private String parseWhen; - - @JsonProperty("tags_on_failure") - @JsonPropertyDescription("A list of strings specifying the tags to be set in the event that the processor fails or an unknown exception occurs during parsing.") - private List tagsOnFailure; - - @JsonProperty("overwrite_if_destination_exists") + @JsonProperty(value = "overwrite_if_destination_exists", defaultValue = "true") @JsonPropertyDescription("Overwrites the destination if set to true. Set to false to prevent changing a destination value that exists. Defaults to true.") private boolean overwriteIfDestinationExists = true; @JsonProperty - @JsonPropertyDescription("If true, the configured source field will be deleted after the JSON data is parsed into separate fields.") + @JsonPropertyDescription("If true, the configured source field will be deleted after the JSON data is parsed into separate fields.") private boolean deleteSource = false; + @JsonProperty("tags_on_failure") + @JsonPropertyDescription("A list of strings specifying the tags to be set in the event when the processor fails or an unknown exception occurs during parsing.") + private List tagsOnFailure; + + @JsonProperty("parse_when") + @JsonPropertyDescription("A conditional expression such as /some_key == \"test\". " + + "If specified, the parse_json processor will only run on events when the expression evaluates to true. ") + private String parseWhen; + @JsonProperty("handle_failed_events") @JsonPropertyDescription("Determines how to handle events with JSON processing errors. Options include 'skip', " + - "which will log the error and send the Event downstream to the next processor, and 'skip_silently', " + + "which will log the error and send the event downstream to the next processor, and 'skip_silently', " + "which will send the Event downstream to the next processor without logging the error. " + "Default is 'skip'.") @NotNull @@ -66,6 +77,11 @@ public String getSource() { return source; } + @Override + public int getDepth() { + return depth; + } + @Override public String getDestination() { return destination; diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessor.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessor.java index 9dced55355..41d9ab5f70 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessor.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessor.java @@ -16,7 +16,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashMap; +import java.util.Map; import java.util.Optional; import static org.opensearch.dataprepper.logging.DataPrepperMarkers.SENSITIVE; @@ -43,7 +43,7 @@ public ParseXmlProcessor(final PluginMetrics pluginMetrics, } @Override - protected Optional> readValue(final String message, final Event context) { + protected Optional> readValue(final String message, final Event context) { try { return Optional.of(xmlMapper.readValue(message, new TypeReference<>() {})); } catch (JsonProcessingException e) { diff --git a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessorConfig.java b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessorConfig.java index 92cd9f553a..4d1e0011b2 100644 --- a/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessorConfig.java +++ b/data-prepper-plugins/parse-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/parse/xml/ParseXmlProcessorConfig.java @@ -7,6 +7,7 @@ import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; import org.opensearch.dataprepper.model.event.HandleFailedEventsOption; import org.opensearch.dataprepper.plugins.processor.parse.CommonParseConfig; @@ -14,42 +15,45 @@ import java.util.Objects; @JsonPropertyOrder -@JsonClassDescription("The `parse_xml` processor parses XML data for an event.") +@JsonClassDescription("The parse_xml processor parses XML data for an event.") public class ParseXmlProcessorConfig implements CommonParseConfig { static final String DEFAULT_SOURCE = "message"; @NotBlank - @JsonProperty("source") - @JsonPropertyDescription("The field in the event that will be parsed. Default value is message.") + @JsonProperty(value = "source", defaultValue = DEFAULT_SOURCE) + @JsonPropertyDescription("The field in the event that will be parsed. The default value is message.") private String source = DEFAULT_SOURCE; @JsonProperty("destination") - @JsonPropertyDescription("The destination field of the parsed JSON. Defaults to the root of the event. Cannot be an empty string, /, or any white-space-only string because these are not valid event fields.") + @Pattern(regexp = "^(?!\\s*$)(?!^/$).+", message = "Cannot be an empty string, /, or any whitespace-only string") + @JsonPropertyDescription("The destination field of the structured object from the parsed XML. Defaults to the root of the event. Cannot be an empty string, /, or any whitespace-only string because these are not valid event fields.") private String destination; @JsonProperty("pointer") - @JsonPropertyDescription("A JSON pointer to the field to be parsed. There is no pointer by default, meaning the entire source is parsed. The pointer can access JSON array indexes as well. If the JSON pointer is invalid then the entire source data is parsed into the outgoing event. If the key that is pointed to already exists in the event and the destination is the root, then the pointer uses the entire path of the key.") + @JsonPropertyDescription("A JSON pointer to the field to be parsed. There is no pointer by default, meaning the entire source is parsed. The pointer can access JSON array indexes as well. " + + "If the JSON pointer is invalid then the entire source data is parsed into the outgoing event. If the key that is pointed to already exists in the event and the destination is the root, then the pointer uses the entire path of the key.") private String pointer; - @JsonProperty("parse_when") - @JsonPropertyDescription("A Data Prepper [conditional expression](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/), such as '/some-key == \"test\"', that will be evaluated to determine whether the processor will be run on the event.") - private String parseWhen; - - @JsonProperty("tags_on_failure") - @JsonPropertyDescription("A list of strings specifying the tags to be set in the event that the processor fails or an unknown exception occurs during parsing.") - private List tagsOnFailure; - - @JsonProperty("overwrite_if_destination_exists") + @JsonProperty(value = "overwrite_if_destination_exists", defaultValue = "true") @JsonPropertyDescription("Overwrites the destination if set to true. Set to false to prevent changing a destination value that exists. Defaults to true.") private boolean overwriteIfDestinationExists = true; @JsonProperty - @JsonPropertyDescription("If true, the configured source field will be deleted after the JSON data is parsed into separate fields.") + @JsonPropertyDescription("If true, the configured source field will be deleted after the XML data is parsed into separate fields.") private boolean deleteSource = false; + @JsonProperty("parse_when") + @JsonPropertyDescription("A conditional expression such as /some_key == \"test\". " + + "If specified, the parse_xml processor will only run on events when the expression evaluates to true. ") + private String parseWhen; + + @JsonProperty("tags_on_failure") + @JsonPropertyDescription("A list of strings specifying the tags to be set in the event when the processor fails or an unknown exception occurs during parsing.") + private List tagsOnFailure; + @JsonProperty("handle_failed_events") @JsonPropertyDescription("Determines how to handle events with XML processing errors. Options include 'skip', " + - "which will log the error and send the Event downstream to the next processor, and 'skip_silently', " + + "which will log the error and send the event downstream to the next processor, and 'skip_silently', " + "which will send the Event downstream to the next processor without logging the error. " + "Default is 'skip'.") @NotNull @@ -70,6 +74,9 @@ public String getPointer() { return pointer; } + @Override + public int getDepth() { return 0; } + @Override public List getTagsOnFailure() { return tagsOnFailure; diff --git a/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonCodecsIT.java b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonCodecsIT.java index cbdedb3f1f..2138f4cc92 100644 --- a/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonCodecsIT.java +++ b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonCodecsIT.java @@ -36,21 +36,26 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; public class JsonCodecsIT { private ObjectMapper objectMapper; private Consumer> eventConsumer; + private JsonInputCodecConfig jsonInputCodecConfig; @BeforeEach void setUp() { objectMapper = new ObjectMapper(); - + jsonInputCodecConfig = mock(JsonInputCodecConfig.class); + when(jsonInputCodecConfig.getIncludeKeysMetadata()).thenReturn(Collections.emptyList()); + when(jsonInputCodecConfig.getIncludeKeys()).thenReturn(Collections.emptyList()); + when(jsonInputCodecConfig.getKeyName()).thenReturn(null); eventConsumer = mock(Consumer.class); } private JsonInputCodec createJsonInputCodecObjectUnderTest() { - return new JsonInputCodec(); + return new JsonInputCodec(jsonInputCodecConfig); } private JsonOutputCodec createJsonOutputCodecObjectUnderTest() { diff --git a/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecConfigTest.java b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecConfigTest.java new file mode 100644 index 0000000000..d402d13691 --- /dev/null +++ b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecConfigTest.java @@ -0,0 +1,25 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.codec.json; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNull; + +public class JsonInputCodecConfigTest { + + private JsonInputCodecConfig createObjectUnderTest() { + return new JsonInputCodecConfig(); + } + + @Test + public void testJsonInputCodecConfig() { + JsonInputCodecConfig jsonInputCodecConfig = createObjectUnderTest(); + assertNull(jsonInputCodecConfig.getKeyName()); + assertNull(jsonInputCodecConfig.getIncludeKeys()); + assertNull(jsonInputCodecConfig.getIncludeKeysMetadata()); + } +} diff --git a/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecTest.java b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecTest.java index 544f486252..5c6a0b313f 100644 --- a/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecTest.java +++ b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/codec/json/JsonInputCodecTest.java @@ -46,26 +46,33 @@ import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.params.provider.Arguments.arguments; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; class JsonInputCodecTest { private ObjectMapper objectMapper; + private JsonInputCodecConfig jsonInputCodecConfig; private Consumer> eventConsumer; @BeforeEach void setUp() { objectMapper = new ObjectMapper(); - + jsonInputCodecConfig = mock(JsonInputCodecConfig.class); + when(jsonInputCodecConfig.getIncludeKeysMetadata()).thenReturn(null); + when(jsonInputCodecConfig.getIncludeKeys()).thenReturn(null); + when(jsonInputCodecConfig.getKeyName()).thenReturn(null); eventConsumer = mock(Consumer.class); } private JsonInputCodec createObjectUnderTest() { - return new JsonInputCodec(); + return new JsonInputCodec(jsonInputCodecConfig); } @Test @@ -215,6 +222,87 @@ void parse_with_InputStream_calls_Consumer_with_Event(final int numberOfObjects) } } + @ParameterizedTest + @ValueSource(ints = {1, 2, 10, 100}) + void parse_with_InputStream_calls_Consumer_with_EventConfig_validKey(final int numberOfObjects) throws IOException { + parse_InputStream_withEventConfig(numberOfObjects, "key", Collections.emptyList(), Collections.emptyList()); + } + + @ParameterizedTest + @ValueSource(ints = {1, 2, 10, 100}) + void parse_with_InputStream_calls_Consumer_with_EventConfig_validKey_includeKeys(final int numberOfObjects) throws IOException { + List includeKeys = new ArrayList<>(); + for (int i=0; i includeKeys = new ArrayList<>(); + List includeMetadataKeys = new ArrayList<>(); + for (int i=0; i includeMetadataKeys = new ArrayList<>(); + for (int i=0; i includeMetadataKeys = null; + List includeKeys = null; + final Map jsonObjects = generateJsonWithSpecificKeys(includeKeys, includeMetadataKeys, "key", numberOfObjects, 2); + when(jsonInputCodecConfig.getIncludeKeysMetadata()).thenReturn(includeMetadataKeys); + when(jsonInputCodecConfig.getIncludeKeys()).thenReturn(includeKeys); + when(jsonInputCodecConfig.getKeyName()).thenReturn("key2"); + + createObjectUnderTest().parse(createInputStream(jsonObjects), eventConsumer); + + verify(eventConsumer, times(0)).accept(any(Record.class)); + } + + @ParameterizedTest + @ValueSource(ints = {1, 2, 10, 100}) + void parse_with_InputStream_calls_Consumer_with_EventConfig_NullKey(final int numberOfObjects) throws IOException { + List includeMetadataKeys = null; + List includeKeys = null; + final Map jsonObjects = generateJsonWithSpecificKeys(includeKeys, includeMetadataKeys, "key", numberOfObjects, 2); + when(jsonInputCodecConfig.getIncludeKeysMetadata()).thenReturn(includeMetadataKeys); + when(jsonInputCodecConfig.getIncludeKeys()).thenReturn(includeKeys); + when(jsonInputCodecConfig.getKeyName()).thenReturn(null); + + createObjectUnderTest().parse(createInputStream(jsonObjects), eventConsumer); + + final ArgumentCaptor> recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + verify(eventConsumer, times(numberOfObjects)).accept(recordArgumentCaptor.capture()); + + final List> actualRecords = recordArgumentCaptor.getAllValues(); + + assertThat(actualRecords.size(), equalTo(numberOfObjects)); + for (int i = 0; i < actualRecords.size(); i++) { + + final Record actualRecord = actualRecords.get(i); + assertThat(actualRecord, notNullValue()); + assertThat(actualRecord.getData(), notNullValue()); + assertThat(actualRecord.getData().getMetadata(), notNullValue()); + assertThat(actualRecord.getData().getMetadata().getEventType(), equalTo(EventType.LOG.toString())); + } + } + @ParameterizedTest @ArgumentsSource(JsonPermutations.class) void parse_with_InputStream_calls_Consumer_for_arrays_in_Json_permutations(final Function>, Map> rootJsonGenerator) throws IOException { @@ -336,4 +424,68 @@ private static Map generateJson() { return jsonObject; } + + private Map generateJsonWithSpecificKeys(final List includeKeys, + final List includeMetadataKeys, + final String key, + final int numKeyRecords, + final int numKeyPerRecord) { + final Map jsonObject = new LinkedHashMap<>(); + final List> innerObjects = new ArrayList<>(); + + if (includeKeys != null && !includeKeys.isEmpty()) { + for (String includeKey : includeKeys) { + jsonObject.put(includeKey, UUID.randomUUID().toString()); + } + } + + if (includeMetadataKeys != null && !includeMetadataKeys.isEmpty()) { + for (String includeMetadataKey : includeMetadataKeys) { + jsonObject.put(includeMetadataKey, UUID.randomUUID().toString()); + } + } + + for (int i=0; i innerJsonMap = new LinkedHashMap<>(); + for (int j=0; j includeKeys, final List includeMetadataKeys) throws IOException { + final Map jsonObjects = generateJsonWithSpecificKeys(includeKeys, includeMetadataKeys, objectKey, numberOfObjects, 2); + when(jsonInputCodecConfig.getIncludeKeysMetadata()).thenReturn(includeMetadataKeys); + when(jsonInputCodecConfig.getIncludeKeys()).thenReturn(includeKeys); + when(jsonInputCodecConfig.getKeyName()).thenReturn(objectKey); + + createObjectUnderTest().parse(createInputStream(jsonObjects), eventConsumer); + + final ArgumentCaptor> recordArgumentCaptor = ArgumentCaptor.forClass(Record.class); + verify(eventConsumer, times(numberOfObjects)).accept(recordArgumentCaptor.capture()); + + final List> actualRecords = recordArgumentCaptor.getAllValues(); + + assertThat(actualRecords.size(), equalTo(numberOfObjects)); + for (final Record actualRecord : actualRecords) { + + assertThat(actualRecord, notNullValue()); + assertThat(actualRecord.getData(), notNullValue()); + assertThat(actualRecord.getData().getMetadata(), notNullValue()); + + Map dataMap = actualRecord.getData().toMap(); + for (String includeKey : includeKeys) { + assertTrue(dataMap.containsKey(includeKey)); + } + + Map metadataMap = actualRecord.getData().getMetadata().getAttributes(); + for (String includeMetadataKey: includeMetadataKeys) { + assertTrue(metadataMap.containsKey(includeMetadataKey)); + } + assertThat(actualRecord.getData().getMetadata().getEventType(), equalTo(EventType.LOG.toString())); + } + } } \ No newline at end of file diff --git a/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorTest.java b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorTest.java index 50dd55b501..c33e2dc335 100644 --- a/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorTest.java +++ b/data-prepper-plugins/parse-json-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/parse/json/ParseJsonProcessorTest.java @@ -5,7 +5,10 @@ package org.opensearch.dataprepper.plugins.processor.parse.json; +import com.fasterxml.jackson.databind.ObjectMapper; import io.micrometer.core.instrument.Counter; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.opensearch.dataprepper.expression.ExpressionEvaluator; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.event.Event; @@ -48,6 +51,8 @@ public class ParseJsonProcessorTest { private static final String DEEPLY_NESTED_KEY_NAME = "base"; + private final ObjectMapper objectMapper = new ObjectMapper(); + protected CommonParseConfig processorConfig; @Mock @@ -125,6 +130,69 @@ void test_when_differentSourceAndDestination_then_processorParsesCorrectly() { verifyNoInteractions(handleFailedEventsOption); } + @Test + void test_simple_depth_value_1() throws Exception { + final String source = "root_source"; + when(processorConfig.getSource()).thenReturn(source); + when(processorConfig.getDestination()).thenReturn(source); + when(processorConfig.getDepth()).thenReturn(1); + parseJsonProcessor = createObjectUnderTest(); // need to recreate so that new config options are used + + Map data = Map.of("key1", "value1", "key2", 1, "key3", Map.of("key5", Map.of("key6", "value6"))); + Map expectedResult = Map.of("key1", "value1", "key2", 1, "key3", "{\"key5\":{\"key6\":\"value6\"}}"); + final String serializedMessage = objectMapper.writeValueAsString(data); + final Event parsedEvent = createAndParseMessageEvent(serializedMessage); + assertThatKeyEquals(parsedEvent, source, expectedResult); + } + + @Test + void test_simple_depth_value_2() throws Exception { + final String source = "root_source"; + when(processorConfig.getSource()).thenReturn(source); + when(processorConfig.getDestination()).thenReturn(source); + when(processorConfig.getDepth()).thenReturn(2); + parseJsonProcessor = createObjectUnderTest(); // need to recreate so that new config options are used + + Map data = Map.of("key1", "value1", "key2", 1, "key3", Map.of("key4", 4, "key5", Map.of("key6", "value6"))); + Map expectedResult = Map.of("key1", "value1", "key2", 1, "key3", Map.of("key4", 4, "key5", "{\"key6\":\"value6\"}")); + final String serializedMessage = objectMapper.writeValueAsString(data); + final Event parsedEvent = createAndParseMessageEvent(serializedMessage); + assertThatKeyEquals(parsedEvent, source, expectedResult); + } + + @ParameterizedTest + @ValueSource(ints = {0,1,2,3,4,5,6,7,8,9,10}) + void test_depth_option_with_same_source_and_destination(int depth) throws Exception { + final String source = "root_source"; + when(processorConfig.getSource()).thenReturn(source); + when(processorConfig.getDestination()).thenReturn(source); + when(processorConfig.getDepth()).thenReturn(depth); + parseJsonProcessor = createObjectUnderTest(); // need to recreate so that new config options are used + + Map mapValue = new HashMap<>(); + Map prevMap = null; + Object expectedResult = null; + // Create a map with 12 nested levels + for (int i = 11; i >= 0; i--) { + Map m = (prevMap == null) ? + Map.of("key" + i, i, "key" + (100 + i), "value" + i) : + Map.of("key" + i, i, "key" + (100 + i), "value" + i, "key"+(1000+i), prevMap); + if (i == depth) { + expectedResult = (depth == 0) ? m : objectMapper.writeValueAsString(m); + } else if (i < depth) { + expectedResult = Map.of("key" + i, i, "key" + (100 + i), "value" + i, "key"+(1000+i), expectedResult); + } + prevMap = m; + } + + mapValue = prevMap; + final String serializedMessage = objectMapper.writeValueAsString(mapValue); + final Event parsedEvent = createAndParseMessageEvent(serializedMessage); + assertThatKeyEquals(parsedEvent, source, expectedResult); + + } + + @Test void test_when_dataFieldEqualToRootField_then_overwritesOriginalFields() { final String source = "root_source"; diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/ClientFactory.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/ClientFactory.java index 7831754f0f..9de211ac6d 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/ClientFactory.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/ClientFactory.java @@ -9,22 +9,25 @@ import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; import org.opensearch.dataprepper.plugins.source.rds.configuration.AwsAuthenticationConfig; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.awssdk.services.s3.S3Client; public class ClientFactory { - private final AwsCredentialsProvider awsCredentialsProvider; private final AwsAuthenticationConfig awsAuthenticationConfig; + private final AwsCredentialsProvider awsCredentialsProvider; + private final RdsSourceConfig sourceConfig; public ClientFactory(final AwsCredentialsSupplier awsCredentialsSupplier, - final AwsAuthenticationConfig awsAuthenticationConfig) { + final RdsSourceConfig sourceConfig) { + awsAuthenticationConfig = sourceConfig.getAwsAuthenticationConfig(); awsCredentialsProvider = awsCredentialsSupplier.getProvider(AwsCredentialsOptions.builder() .withRegion(awsAuthenticationConfig.getAwsRegion()) .withStsRoleArn(awsAuthenticationConfig.getAwsStsRoleArn()) .withStsExternalId(awsAuthenticationConfig.getAwsStsExternalId()) .withStsHeaderOverrides(awsAuthenticationConfig.getAwsStsHeaderOverrides()) .build()); - this.awsAuthenticationConfig = awsAuthenticationConfig; + this.sourceConfig = sourceConfig; } public RdsClient buildRdsClient() { @@ -36,8 +39,16 @@ public RdsClient buildRdsClient() { public S3Client buildS3Client() { return S3Client.builder() - .region(awsAuthenticationConfig.getAwsRegion()) + .region(getS3ClientRegion()) .credentialsProvider(awsCredentialsProvider) .build(); } + + private Region getS3ClientRegion() { + if (sourceConfig.getS3Region() != null) { + return sourceConfig.getS3Region(); + } + + return awsAuthenticationConfig.getAwsRegion(); + } } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsService.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsService.java index 0431b39372..880586b6fe 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsService.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsService.java @@ -5,13 +5,13 @@ package org.opensearch.dataprepper.plugins.source.rds; -import com.github.shyiko.mysql.binlog.BinaryLogClient; import com.github.shyiko.mysql.binlog.network.SSLMode; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.plugins.source.rds.export.DataFileScheduler; @@ -27,6 +27,7 @@ import org.opensearch.dataprepper.plugins.source.rds.schema.SchemaManager; import org.opensearch.dataprepper.plugins.source.rds.stream.BinlogClientFactory; import org.opensearch.dataprepper.plugins.source.rds.stream.StreamScheduler; +import org.opensearch.dataprepper.plugins.source.rds.utils.IdentifierShortener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.services.rds.RdsClient; @@ -44,6 +45,8 @@ public class RdsService { * Maximum concurrent data loader per node */ public static final int DATA_LOADER_MAX_JOB_COUNT = 1; + public static final String S3_PATH_DELIMITER = "/"; + public static final int MAX_SOURCE_IDENTIFIER_LENGTH = 15; private final RdsClient rdsClient; private final S3Client s3Client; @@ -52,6 +55,7 @@ public class RdsService { private final PluginMetrics pluginMetrics; private final RdsSourceConfig sourceConfig; private final AcknowledgementSetManager acknowledgementSetManager; + private final PluginConfigObservable pluginConfigObservable; private ExecutorService executor; private LeaderScheduler leaderScheduler; private ExportScheduler exportScheduler; @@ -63,12 +67,14 @@ public RdsService(final EnhancedSourceCoordinator sourceCoordinator, final EventFactory eventFactory, final ClientFactory clientFactory, final PluginMetrics pluginMetrics, - final AcknowledgementSetManager acknowledgementSetManager) { + final AcknowledgementSetManager acknowledgementSetManager, + final PluginConfigObservable pluginConfigObservable) { this.sourceCoordinator = sourceCoordinator; this.eventFactory = eventFactory; this.pluginMetrics = pluginMetrics; this.sourceConfig = sourceConfig; this.acknowledgementSetManager = acknowledgementSetManager; + this.pluginConfigObservable = pluginConfigObservable; rdsClient = clientFactory.buildRdsClient(); s3Client = clientFactory.buildS3Client(); @@ -88,8 +94,10 @@ public void start(Buffer> buffer) { final RdsApiStrategy rdsApiStrategy = sourceConfig.isCluster() ? new ClusterApiStrategy(rdsClient) : new InstanceApiStrategy(rdsClient); final DbMetadata dbMetadata = rdsApiStrategy.describeDb(sourceConfig.getDbIdentifier()); + final String s3PathPrefix = getS3PathPrefix(); + leaderScheduler = new LeaderScheduler( - sourceCoordinator, sourceConfig, getSchemaManager(sourceConfig, dbMetadata), dbMetadata); + sourceCoordinator, sourceConfig, s3PathPrefix, getSchemaManager(sourceConfig, dbMetadata), dbMetadata); runnableList.add(leaderScheduler); if (sourceConfig.isExportEnabled()) { @@ -98,20 +106,22 @@ public void start(Buffer> buffer) { exportScheduler = new ExportScheduler( sourceCoordinator, snapshotManager, exportTaskManager, s3Client, pluginMetrics); dataFileScheduler = new DataFileScheduler( - sourceCoordinator, sourceConfig, s3Client, eventFactory, buffer, pluginMetrics, acknowledgementSetManager); + sourceCoordinator, sourceConfig, s3PathPrefix, s3Client, eventFactory, buffer, pluginMetrics, acknowledgementSetManager); runnableList.add(exportScheduler); runnableList.add(dataFileScheduler); } if (sourceConfig.isStreamEnabled()) { - BinaryLogClient binaryLogClient = new BinlogClientFactory(sourceConfig, rdsClient, dbMetadata).create(); + BinlogClientFactory binaryLogClientFactory = new BinlogClientFactory(sourceConfig, rdsClient, dbMetadata); + if (sourceConfig.isTlsEnabled()) { - binaryLogClient.setSSLMode(SSLMode.REQUIRED); + binaryLogClientFactory.setSSLMode(SSLMode.REQUIRED); } else { - binaryLogClient.setSSLMode(SSLMode.DISABLED); + binaryLogClientFactory.setSSLMode(SSLMode.DISABLED); } + streamScheduler = new StreamScheduler( - sourceCoordinator, sourceConfig, binaryLogClient, buffer, pluginMetrics, acknowledgementSetManager); + sourceCoordinator, sourceConfig, s3PathPrefix, binaryLogClientFactory, buffer, pluginMetrics, acknowledgementSetManager, pluginConfigObservable); runnableList.add(streamScheduler); } @@ -149,4 +159,24 @@ private SchemaManager getSchemaManager(final RdsSourceConfig sourceConfig, final sourceConfig.isTlsEnabled()); return new SchemaManager(connectionManager); } + + private String getS3PathPrefix() { + final String s3UserPathPrefix; + if (sourceConfig.getS3Prefix() != null && !sourceConfig.getS3Prefix().isBlank()) { + s3UserPathPrefix = sourceConfig.getS3Prefix(); + } else { + s3UserPathPrefix = ""; + } + + final String s3PathPrefix; + if (sourceCoordinator.getPartitionPrefix() != null ) { + // The prefix will be used in RDS export, which has a limit of 60 characters. + s3PathPrefix = s3UserPathPrefix + S3_PATH_DELIMITER + IdentifierShortener.shortenIdentifier(sourceCoordinator.getPartitionPrefix(), MAX_SOURCE_IDENTIFIER_LENGTH); + } else { + s3PathPrefix = s3UserPathPrefix; + } + return s3PathPrefix; + } + + } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSource.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSource.java index 5c2b08fb5c..1f15a6263d 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSource.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSource.java @@ -13,6 +13,7 @@ import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.Source; import org.opensearch.dataprepper.model.source.coordinator.SourcePartitionStoreItem; @@ -37,6 +38,7 @@ public class RdsSource implements Source>, UsesEnhancedSourceCoord private final RdsSourceConfig sourceConfig; private final EventFactory eventFactory; private final AcknowledgementSetManager acknowledgementSetManager; + private final PluginConfigObservable pluginConfigObservable; private EnhancedSourceCoordinator sourceCoordinator; private RdsService rdsService; @@ -45,13 +47,15 @@ public RdsSource(final PluginMetrics pluginMetrics, final RdsSourceConfig sourceConfig, final EventFactory eventFactory, final AwsCredentialsSupplier awsCredentialsSupplier, - final AcknowledgementSetManager acknowledgementSetManager) { + final AcknowledgementSetManager acknowledgementSetManager, + final PluginConfigObservable pluginConfigObservable) { this.pluginMetrics = pluginMetrics; this.sourceConfig = sourceConfig; this.eventFactory = eventFactory; this.acknowledgementSetManager = acknowledgementSetManager; + this.pluginConfigObservable = pluginConfigObservable; - clientFactory = new ClientFactory(awsCredentialsSupplier, sourceConfig.getAwsAuthenticationConfig()); + clientFactory = new ClientFactory(awsCredentialsSupplier, sourceConfig); } @Override @@ -60,7 +64,7 @@ public void start(Buffer> buffer) { Objects.requireNonNull(sourceCoordinator); sourceCoordinator.createPartition(new LeaderPartition()); - rdsService = new RdsService(sourceCoordinator, sourceConfig, eventFactory, clientFactory, pluginMetrics, acknowledgementSetManager); + rdsService = new RdsService(sourceCoordinator, sourceConfig, eventFactory, clientFactory, pluginMetrics, acknowledgementSetManager, pluginConfigObservable); LOG.info("Start RDS service"); rdsService.start(buffer); diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceConfig.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceConfig.java index 65a65a4fde..28854b317d 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceConfig.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceConfig.java @@ -7,12 +7,15 @@ import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.Valid; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; import org.opensearch.dataprepper.plugins.source.rds.configuration.AwsAuthenticationConfig; import org.opensearch.dataprepper.plugins.source.rds.configuration.EngineType; import org.opensearch.dataprepper.plugins.source.rds.configuration.ExportConfig; import org.opensearch.dataprepper.plugins.source.rds.configuration.StreamConfig; import org.opensearch.dataprepper.plugins.source.rds.configuration.TlsConfig; +import software.amazon.awssdk.regions.Region; import java.time.Duration; import java.util.List; @@ -21,6 +24,7 @@ * Configuration for RDS Source */ public class RdsSourceConfig { + private static final int DEFAULT_S3_FOLDER_PARTITION_COUNT = 100; /** * Identifier for RDS instance/cluster or Aurora cluster @@ -72,6 +76,14 @@ public class RdsSourceConfig { @JsonProperty("s3_region") private String s3Region; + /** + * The number of folder partitions in S3 buffer + */ + @JsonProperty("partition_count") + @Min(1) + @Max(1000) + private int s3FolderPartitionCount = DEFAULT_S3_FOLDER_PARTITION_COUNT; + @JsonProperty("export") @Valid private ExportConfig exportConfig; @@ -132,8 +144,12 @@ public String getS3Prefix() { return s3Prefix; } - public String getS3Region() { - return s3Region; + public Region getS3Region() { + return s3Region != null ? Region.of(s3Region) : null; + } + + public int getPartitionCount() { + return s3FolderPartitionCount; } public ExportConfig getExport() { diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/ExportConfig.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/ExportConfig.java index b3bdedcaef..161e068559 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/ExportConfig.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/ExportConfig.java @@ -14,7 +14,18 @@ public class ExportConfig { @NotNull private String kmsKeyId; + /** + * The ARN of the IAM role that will be passed to RDS for export. + */ + @JsonProperty("iam_role_arn") + @NotNull + private String iamRoleArn; + public String getKmsKeyId() { return kmsKeyId; } + + public String getIamRoleArn() { + return iamRoleArn; + } } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/StreamConfig.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/StreamConfig.java index f2b5af11a1..f2fcd474d6 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/StreamConfig.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/configuration/StreamConfig.java @@ -11,23 +11,14 @@ public class StreamConfig { - private static final int DEFAULT_S3_FOLDER_PARTITION_COUNT = 100; private static final int DEFAULT_NUM_WORKERS = 1; - @JsonProperty("partition_count") - @Min(1) - @Max(1000) - private int s3FolderPartitionCount = DEFAULT_S3_FOLDER_PARTITION_COUNT; - + // TODO: Restricted max to 1 here until we have a proper method to process the stream events in parallel. @JsonProperty("workers") @Min(1) - @Max(1000) + @Max(1) private int numWorkers = DEFAULT_NUM_WORKERS; - public int getPartitionCount() { - return s3FolderPartitionCount; - } - public int getNumWorkers() { return numWorkers; } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverter.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverter.java index 428f121788..d571e40f32 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverter.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverter.java @@ -5,52 +5,14 @@ package org.opensearch.dataprepper.plugins.source.rds.converter; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.EventMetadata; -import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; -import org.opensearch.dataprepper.model.record.Record; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +public class ExportRecordConverter extends RecordConverter { -import java.util.List; -import java.util.stream.Collectors; - -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.BULK_ACTION_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_DATABASE_NAME_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TABLE_NAME_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TIMESTAMP_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_VERSION_FROM_TIMESTAMP; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.INGESTION_EVENT_TYPE_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE; - -public class ExportRecordConverter { - - private static final Logger LOG = LoggerFactory.getLogger(ExportRecordConverter.class); - - static final String EXPORT_EVENT_TYPE = "EXPORT"; - - public Event convert(final Record record, - final String databaseName, - final String tableName, - final List primaryKeys, - final long eventCreateTimeEpochMillis, - final long eventVersionNumber) { - Event event = record.getData(); - - EventMetadata eventMetadata = event.getMetadata(); - eventMetadata.setAttribute(EVENT_DATABASE_NAME_METADATA_ATTRIBUTE, databaseName); - eventMetadata.setAttribute(EVENT_TABLE_NAME_METADATA_ATTRIBUTE, tableName); - eventMetadata.setAttribute(BULK_ACTION_METADATA_ATTRIBUTE, OpenSearchBulkActions.INDEX.toString()); - eventMetadata.setAttribute(INGESTION_EVENT_TYPE_ATTRIBUTE, EXPORT_EVENT_TYPE); - - final String primaryKeyValue = primaryKeys.stream() - .map(key -> event.get(key, String.class)) - .collect(Collectors.joining("|")); - eventMetadata.setAttribute(PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE, primaryKeyValue); - - eventMetadata.setAttribute(EVENT_TIMESTAMP_METADATA_ATTRIBUTE, eventCreateTimeEpochMillis); - eventMetadata.setAttribute(EVENT_VERSION_FROM_TIMESTAMP, eventVersionNumber); + public ExportRecordConverter(final String s3Prefix, final int partitionCount) { + super(s3Prefix, partitionCount); + } - return event; + @Override + String getIngestionType() { + return EXPORT_INGESTION_TYPE; } } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/RecordConverter.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/RecordConverter.java new file mode 100644 index 0000000000..8c7dcdb996 --- /dev/null +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/RecordConverter.java @@ -0,0 +1,114 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.rds.converter; + +import com.github.shyiko.mysql.binlog.event.EventType; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventMetadata; +import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; + +import java.nio.ByteBuffer; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.time.Instant; +import java.util.List; +import java.util.stream.Collectors; + +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.BULK_ACTION_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_DATABASE_NAME_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TABLE_NAME_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TIMESTAMP_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_VERSION_FROM_TIMESTAMP; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.INGESTION_EVENT_TYPE_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE; + +public abstract class RecordConverter { + + private final String s3Prefix; + private final List folderNames; + + static final String S3_BUFFER_PREFIX = "buffer"; + static final String S3_PATH_DELIMITER = "/"; + static final String EXPORT_INGESTION_TYPE = "EXPORT"; + static final String STREAM_INGESTION_TYPE = "STREAM"; + + + public RecordConverter(final String s3Prefix, final int partitionCount) { + this.s3Prefix = s3Prefix; + S3PartitionCreator s3PartitionCreator = new S3PartitionCreator(partitionCount); + folderNames = s3PartitionCreator.createPartitions(); + } + + public Event convert(final Event event, + final String databaseName, + final String tableName, + final OpenSearchBulkActions bulkAction, + final List primaryKeys, + final long eventCreateTimeEpochMillis, + final long eventVersionNumber, + final EventType eventType) { + + EventMetadata eventMetadata = event.getMetadata(); + + // Only set external origination time for stream events, not export + if (STREAM_INGESTION_TYPE.equals(getIngestionType())) { + final Instant externalOriginationTime = Instant.ofEpochMilli(eventCreateTimeEpochMillis); + event.getEventHandle().setExternalOriginationTime(externalOriginationTime); + eventMetadata.setExternalOriginationTime(externalOriginationTime); + } + + eventMetadata.setAttribute(EVENT_DATABASE_NAME_METADATA_ATTRIBUTE, databaseName); + eventMetadata.setAttribute(EVENT_TABLE_NAME_METADATA_ATTRIBUTE, tableName); + eventMetadata.setAttribute(BULK_ACTION_METADATA_ATTRIBUTE, bulkAction.toString()); + setIngestionTypeMetadata(event); + if (eventType != null) { + eventMetadata.setAttribute(CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE, eventType.toString()); + } + + final String primaryKeyValue = primaryKeys.stream() + .map(key -> event.get(key, String.class)) + .collect(Collectors.joining("|")); + eventMetadata.setAttribute(PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE, primaryKeyValue); + + final String s3PartitionKey = s3Prefix + S3_PATH_DELIMITER + S3_BUFFER_PREFIX + S3_PATH_DELIMITER + hashKeyToPartition(primaryKeyValue); + eventMetadata.setAttribute(MetadataKeyAttributes.EVENT_S3_PARTITION_KEY, s3PartitionKey); + + eventMetadata.setAttribute(EVENT_TIMESTAMP_METADATA_ATTRIBUTE, eventCreateTimeEpochMillis); + eventMetadata.setAttribute(EVENT_VERSION_FROM_TIMESTAMP, eventVersionNumber); + + return event; + } + + abstract String getIngestionType(); + + private void setIngestionTypeMetadata(final Event event) { + event.getMetadata().setAttribute(INGESTION_EVENT_TYPE_ATTRIBUTE, getIngestionType()); + } + + private String hashKeyToPartition(final String key) { + return folderNames.get(hashKeyToIndex(key)); + } + + private int hashKeyToIndex(final String key) { + try { + // Create a SHA-256 hash instance + final MessageDigest digest = MessageDigest.getInstance("SHA-256"); + // Hash the key + byte[] hashBytes = digest.digest(key.getBytes()); + // Convert the hash to an integer + int hashValue = bytesToInt(hashBytes); + // Map the hash value to an index in the list + return Math.abs(hashValue) % folderNames.size(); + } catch (final NoSuchAlgorithmException e) { + return -1; + } + } + + private int bytesToInt(byte[] bytes) { + return ByteBuffer.wrap(bytes).getInt(); + } +} diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverter.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverter.java index cc1f897bea..76ad9eb89d 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverter.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverter.java @@ -5,107 +5,17 @@ package org.opensearch.dataprepper.plugins.source.rds.converter; -import com.github.shyiko.mysql.binlog.event.EventType; -import org.opensearch.dataprepper.model.event.Event; -import org.opensearch.dataprepper.model.event.EventMetadata; -import org.opensearch.dataprepper.model.event.JacksonEvent; -import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.nio.ByteBuffer; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.time.Instant; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.BULK_ACTION_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_DATABASE_NAME_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TABLE_NAME_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TIMESTAMP_METADATA_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_VERSION_FROM_TIMESTAMP; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.INGESTION_EVENT_TYPE_ATTRIBUTE; -import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE; - /** * Convert binlog row data into JacksonEvent */ -public class StreamRecordConverter { - - private static final Logger LOG = LoggerFactory.getLogger(StreamRecordConverter.class); - - private final List folderNames; +public class StreamRecordConverter extends RecordConverter { - static final String S3_PATH_DELIMITER = "/"; - - static final String STREAM_EVENT_TYPE = "STREAM"; - - public StreamRecordConverter(final int partitionCount) { - S3PartitionCreator s3PartitionCreator = new S3PartitionCreator(partitionCount); - folderNames = s3PartitionCreator.createPartitions(); + public StreamRecordConverter(final String s3Prefix, final int partitionCount) { + super(s3Prefix, partitionCount); } - public Event convert(final Map rowData, - final String databaseName, - final String tableName, - final EventType eventType, - final OpenSearchBulkActions bulkAction, - final List primaryKeys, - final String s3Prefix, - final long eventCreateTimeEpochMillis, - final long eventVersionNumber) { - final Event event = JacksonEvent.builder() - .withEventType("event") - .withData(rowData) - .build(); - - EventMetadata eventMetadata = event.getMetadata(); - - // Only set external origination time for stream events, not export - final Instant externalOriginationTime = Instant.ofEpochMilli(eventCreateTimeEpochMillis); - event.getEventHandle().setExternalOriginationTime(externalOriginationTime); - eventMetadata.setExternalOriginationTime(externalOriginationTime); - - eventMetadata.setAttribute(EVENT_DATABASE_NAME_METADATA_ATTRIBUTE, databaseName); - eventMetadata.setAttribute(EVENT_TABLE_NAME_METADATA_ATTRIBUTE, tableName); - eventMetadata.setAttribute(BULK_ACTION_METADATA_ATTRIBUTE, bulkAction.toString()); - eventMetadata.setAttribute(INGESTION_EVENT_TYPE_ATTRIBUTE, STREAM_EVENT_TYPE); - eventMetadata.setAttribute(CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE, eventType.toString()); - - final String primaryKeyValue = primaryKeys.stream() - .map(rowData::get) - .map(String::valueOf) - .collect(Collectors.joining("|")); - eventMetadata.setAttribute(PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE, primaryKeyValue); - eventMetadata.setAttribute(MetadataKeyAttributes.EVENT_S3_PARTITION_KEY, s3Prefix + S3_PATH_DELIMITER + hashKeyToPartition(primaryKeyValue)); - - eventMetadata.setAttribute(EVENT_TIMESTAMP_METADATA_ATTRIBUTE, eventCreateTimeEpochMillis); - eventMetadata.setAttribute(EVENT_VERSION_FROM_TIMESTAMP, eventVersionNumber); - - return event; - } - - private String hashKeyToPartition(final String key) { - return folderNames.get(hashKeyToIndex(key)); - } - private int hashKeyToIndex(final String key) { - try { - // Create a SHA-256 hash instance - final MessageDigest digest = MessageDigest.getInstance("SHA-256"); - // Hash the key - byte[] hashBytes = digest.digest(key.getBytes()); - // Convert the hash to an integer - int hashValue = bytesToInt(hashBytes); - // Map the hash value to an index in the list - return Math.abs(hashValue) % folderNames.size(); - } catch (final NoSuchAlgorithmException e) { - return -1; - } - } - private int bytesToInt(byte[] bytes) { - return ByteBuffer.wrap(bytes).getInt(); + @Override + String getIngestionType() { + return STREAM_INGESTION_TYPE; } } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoader.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoader.java index 64c613bc43..5e0fe9ecf3 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoader.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoader.java @@ -13,6 +13,7 @@ import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.codec.InputCodec; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.plugins.source.rds.converter.ExportRecordConverter; @@ -121,12 +122,14 @@ public void run() { final long snapshotTime = progressState.getSnapshotTime(); final long eventVersionNumber = snapshotTime - VERSION_OVERLAP_TIME_FOR_EXPORT.toMillis(); final Event transformedEvent = recordConverter.convert( - record, + event, progressState.getSourceDatabase(), progressState.getSourceTable(), + OpenSearchBulkActions.INDEX, primaryKeys, snapshotTime, - eventVersionNumber); + eventVersionNumber, + null); if (acknowledgementSet != null) { acknowledgementSet.add(transformedEvent); diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileScheduler.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileScheduler.java index 33c17d9d80..00af2b7db7 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileScheduler.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileScheduler.java @@ -74,6 +74,7 @@ public class DataFileScheduler implements Runnable { public DataFileScheduler(final EnhancedSourceCoordinator sourceCoordinator, final RdsSourceConfig sourceConfig, + final String s3Prefix, final S3Client s3Client, final EventFactory eventFactory, final Buffer> buffer, @@ -83,7 +84,7 @@ public DataFileScheduler(final EnhancedSourceCoordinator sourceCoordinator, this.sourceConfig = sourceConfig; codec = new ParquetInputCodec(eventFactory); objectReader = new S3ObjectReader(s3Client); - recordConverter = new ExportRecordConverter(); + recordConverter = new ExportRecordConverter(s3Prefix, sourceConfig.getPartitionCount()); executor = Executors.newFixedThreadPool(DATA_LOADER_MAX_JOB_COUNT); this.buffer = buffer; this.pluginMetrics = pluginMetrics; diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderScheduler.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderScheduler.java index 4fc00de3a5..ed80f136dc 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderScheduler.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderScheduler.java @@ -27,13 +27,17 @@ import java.util.Optional; import java.util.stream.Collectors; +import static org.opensearch.dataprepper.plugins.source.rds.RdsService.S3_PATH_DELIMITER; + public class LeaderScheduler implements Runnable { private static final Logger LOG = LoggerFactory.getLogger(LeaderScheduler.class); private static final int DEFAULT_EXTEND_LEASE_MINUTES = 3; private static final Duration DEFAULT_LEASE_INTERVAL = Duration.ofMinutes(1); + private static final String S3_EXPORT_PREFIX = "rds"; private final EnhancedSourceCoordinator sourceCoordinator; private final RdsSourceConfig sourceConfig; + private final String s3Prefix; private final SchemaManager schemaManager; private final DbMetadata dbMetadata; @@ -42,10 +46,12 @@ public class LeaderScheduler implements Runnable { public LeaderScheduler(final EnhancedSourceCoordinator sourceCoordinator, final RdsSourceConfig sourceConfig, + final String s3Prefix, final SchemaManager schemaManager, final DbMetadata dbMetadata) { this.sourceCoordinator = sourceCoordinator; this.sourceConfig = sourceConfig; + this.s3Prefix = s3Prefix; this.schemaManager = schemaManager; this.dbMetadata = dbMetadata; } @@ -127,9 +133,10 @@ private void init() { private void createExportPartition(RdsSourceConfig sourceConfig) { ExportProgressState progressState = new ExportProgressState(); - progressState.setIamRoleArn(sourceConfig.getAwsAuthenticationConfig().getAwsStsRoleArn()); + progressState.setIamRoleArn(sourceConfig.getExport().getIamRoleArn()); progressState.setBucket(sourceConfig.getS3Bucket()); - progressState.setPrefix(sourceConfig.getS3Prefix()); + // This prefix is for data exported from RDS + progressState.setPrefix(getS3PrefixForExport(s3Prefix)); progressState.setTables(sourceConfig.getTableNames()); progressState.setKmsKeyId(sourceConfig.getExport().getKmsKeyId()); progressState.setPrimaryKeyMap(getPrimaryKeyMap()); @@ -137,6 +144,10 @@ private void createExportPartition(RdsSourceConfig sourceConfig) { sourceCoordinator.createPartition(exportPartition); } + private String getS3PrefixForExport(final String givenS3Prefix) { + return givenS3Prefix + S3_PATH_DELIMITER + S3_EXPORT_PREFIX; + } + private Map> getPrimaryKeyMap() { return sourceConfig.getTableNames().stream() .collect(Collectors.toMap( diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKey.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKey.java index feba4555b2..dab6cc8d40 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKey.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKey.java @@ -5,12 +5,16 @@ package org.opensearch.dataprepper.plugins.source.rds.model; +import java.util.Arrays; +import java.util.stream.Collectors; + /** * Represents the object key for an object exported to S3 by RDS. * The object key has this structure: "{prefix}/{export task ID}/{database name}/{table name}/{numbered folder}/{file name}" */ public class ExportObjectKey { + static final String S3_PATH_DELIMITER = "/"; private final String prefix; private final String exportTaskId; private final String databaseName; @@ -29,18 +33,21 @@ public class ExportObjectKey { public static ExportObjectKey fromString(final String objectKeyString) { - final String[] parts = objectKeyString.split("/"); - if (parts.length != 6) { + final String[] parts = objectKeyString.split(S3_PATH_DELIMITER); + if (parts.length < 5) { throw new IllegalArgumentException("Export object key is not valid: " + objectKeyString); } - final String prefix = parts[0]; - final String exportTaskId = parts[1]; - final String databaseName = parts[2]; + + final String prefix = Arrays.stream(parts, 0, parts.length - 5) + .collect(Collectors.joining(S3_PATH_DELIMITER)); + final String exportTaskId = parts[parts.length - 5]; + final String databaseName = parts[parts.length - 4]; // fullTableName is in the format of "databaseName.tableName" - final String fullTableName = parts[3]; + final String fullTableName = parts[parts.length - 3]; final String tableName = fullTableName.split("\\.")[1]; - final String numberedFolder = parts[4]; - final String fileName = parts[5]; + final String numberedFolder = parts[parts.length - 2]; + final String fileName = parts[parts.length - 1]; + return new ExportObjectKey(prefix, exportTaskId, databaseName, tableName, numberedFolder, fileName); } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactory.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactory.java index 24ed45d7c2..8ea7b68889 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactory.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactory.java @@ -6,29 +6,44 @@ package org.opensearch.dataprepper.plugins.source.rds.stream; import com.github.shyiko.mysql.binlog.BinaryLogClient; +import com.github.shyiko.mysql.binlog.network.SSLMode; import org.opensearch.dataprepper.plugins.source.rds.RdsSourceConfig; import org.opensearch.dataprepper.plugins.source.rds.model.DbMetadata; import software.amazon.awssdk.services.rds.RdsClient; public class BinlogClientFactory { - private final RdsSourceConfig sourceConfig; private final RdsClient rdsClient; private final DbMetadata dbMetadata; + private String username; + private String password; + private SSLMode sslMode = SSLMode.REQUIRED; public BinlogClientFactory(final RdsSourceConfig sourceConfig, final RdsClient rdsClient, final DbMetadata dbMetadata) { - this.sourceConfig = sourceConfig; this.rdsClient = rdsClient; this.dbMetadata = dbMetadata; + username = sourceConfig.getAuthenticationConfig().getUsername(); + password = sourceConfig.getAuthenticationConfig().getPassword(); } public BinaryLogClient create() { - return new BinaryLogClient( + BinaryLogClient binaryLogClient = new BinaryLogClient( dbMetadata.getHostName(), dbMetadata.getPort(), - sourceConfig.getAuthenticationConfig().getUsername(), - sourceConfig.getAuthenticationConfig().getPassword()); + username, + password); + binaryLogClient.setSSLMode(sslMode); + return binaryLogClient; + } + + public void setSSLMode(SSLMode sslMode) { + this.sslMode = sslMode; + } + + public void setCredentials(String username, String password) { + this.username = username; + this.password = password; } } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListener.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListener.java index 33defb42b7..6bf3800337 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListener.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListener.java @@ -24,6 +24,7 @@ import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.JacksonEvent; import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.plugins.source.rds.RdsSourceConfig; @@ -51,6 +52,7 @@ public class BinlogEventListener implements BinaryLogClient.EventListener { static final Duration BUFFER_TIMEOUT = Duration.ofSeconds(60); static final int DEFAULT_BUFFER_BATCH_SIZE = 1_000; + static final String DATA_PREPPER_EVENT_TYPE = "event"; static final String CHANGE_EVENTS_PROCESSED_COUNT = "changeEventsProcessed"; static final String CHANGE_EVENTS_PROCESSING_ERROR_COUNT = "changeEventsProcessingErrors"; static final String BYTES_RECEIVED = "bytesReceived"; @@ -86,6 +88,7 @@ public class BinlogEventListener implements BinaryLogClient.EventListener { public BinlogEventListener(final Buffer> buffer, final RdsSourceConfig sourceConfig, + final String s3Prefix, final PluginMetrics pluginMetrics, final BinaryLogClient binaryLogClient, final StreamCheckpointer streamCheckpointer, @@ -93,8 +96,8 @@ public BinlogEventListener(final Buffer> buffer, this.buffer = buffer; this.binaryLogClient = binaryLogClient; tableMetadataMap = new HashMap<>(); - recordConverter = new StreamRecordConverter(sourceConfig.getStream().getPartitionCount()); - s3Prefix = sourceConfig.getS3Prefix(); + recordConverter = new StreamRecordConverter(s3Prefix, sourceConfig.getPartitionCount()); + this.s3Prefix = s3Prefix; tableNames = sourceConfig.getTableNames(); isAcknowledgmentsEnabled = sourceConfig.isAcknowledgmentsEnabled(); this.pluginMetrics = pluginMetrics; @@ -114,6 +117,16 @@ public BinlogEventListener(final Buffer> buffer, eventProcessingTimer = pluginMetrics.timer(REPLICATION_LOG_EVENT_PROCESSING_TIME); } + public static BinlogEventListener create(final Buffer> buffer, + final RdsSourceConfig sourceConfig, + final String s3Prefix, + final PluginMetrics pluginMetrics, + final BinaryLogClient binaryLogClient, + final StreamCheckpointer streamCheckpointer, + final AcknowledgementSetManager acknowledgementSetManager) { + return new BinlogEventListener(buffer, sourceConfig, s3Prefix, pluginMetrics, binaryLogClient, streamCheckpointer, acknowledgementSetManager); + } + @Override public void onEvent(com.github.shyiko.mysql.binlog.event.Event event) { final EventType eventType = event.getHeader().getEventType(); @@ -143,6 +156,7 @@ public void onEvent(com.github.shyiko.mysql.binlog.event.Event event) { public void stopClient() { try { binaryLogClient.disconnect(); + binaryLogClient.unregisterEventListener(this); binlogEventExecutorService.shutdownNow(); LOG.info("Binary log client disconnected."); } catch (Exception e) { @@ -244,16 +258,20 @@ private void handleRowChangeEvent(com.github.shyiko.mysql.binlog.event.Event eve rowDataMap.put(columnNames.get(i), rowDataArray[i]); } + final Event dataPrepperEvent = JacksonEvent.builder() + .withEventType(DATA_PREPPER_EVENT_TYPE) + .withData(rowDataMap) + .build(); + final Event pipelineEvent = recordConverter.convert( - rowDataMap, + dataPrepperEvent, tableMetadata.getDatabaseName(), tableMetadata.getTableName(), - event.getHeader().getEventType(), bulkAction, primaryKeys, - s3Prefix, eventTimestampMillis, - eventTimestampMillis); + eventTimestampMillis, + event.getHeader().getEventType()); pipelineEvents.add(pipelineEvent); } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamScheduler.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamScheduler.java index 14d61e6626..31c2900607 100644 --- a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamScheduler.java +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamScheduler.java @@ -5,11 +5,12 @@ package org.opensearch.dataprepper.plugins.source.rds.stream; -import com.github.shyiko.mysql.binlog.BinaryLogClient; +import org.opensearch.dataprepper.common.concurrent.BackgroundThreadFactory; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourcePartition; @@ -19,7 +20,6 @@ import org.slf4j.LoggerFactory; import java.util.Optional; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static org.opensearch.dataprepper.model.source.s3.S3ScanEnvironmentVariables.STOP_S3_SCAN_PROCESSING_PROPERTY; @@ -33,27 +33,32 @@ public class StreamScheduler implements Runnable { private final EnhancedSourceCoordinator sourceCoordinator; private final RdsSourceConfig sourceConfig; - private final BinaryLogClient binaryLogClient; + private final String s3Prefix; + private final BinlogClientFactory binlogClientFactory; private final Buffer> buffer; private final PluginMetrics pluginMetrics; private final AcknowledgementSetManager acknowledgementSetManager; - private final ExecutorService executorService; + private final PluginConfigObservable pluginConfigObservable; + private StreamWorkerTaskRefresher streamWorkerTaskRefresher; private volatile boolean shutdownRequested = false; public StreamScheduler(final EnhancedSourceCoordinator sourceCoordinator, final RdsSourceConfig sourceConfig, - final BinaryLogClient binaryLogClient, + final String s3Prefix, + final BinlogClientFactory binlogClientFactory, final Buffer> buffer, final PluginMetrics pluginMetrics, - final AcknowledgementSetManager acknowledgementSetManager) { + final AcknowledgementSetManager acknowledgementSetManager, + final PluginConfigObservable pluginConfigObservable) { this.sourceCoordinator = sourceCoordinator; this.sourceConfig = sourceConfig; - this.binaryLogClient = binaryLogClient; + this.s3Prefix = s3Prefix; + this.binlogClientFactory = binlogClientFactory; this.buffer = buffer; this.pluginMetrics = pluginMetrics; this.acknowledgementSetManager = acknowledgementSetManager; - executorService = Executors.newCachedThreadPool(); + this.pluginConfigObservable = pluginConfigObservable; } @Override @@ -73,10 +78,16 @@ public void run() { streamPartition = (StreamPartition) sourcePartition.get(); final StreamCheckpointer streamCheckpointer = new StreamCheckpointer(sourceCoordinator, streamPartition, pluginMetrics); - binaryLogClient.registerEventListener(new BinlogEventListener( - buffer, sourceConfig, pluginMetrics, binaryLogClient, streamCheckpointer, acknowledgementSetManager)); - final StreamWorker streamWorker = StreamWorker.create(sourceCoordinator, binaryLogClient, pluginMetrics); - executorService.submit(() -> streamWorker.processStream((StreamPartition) sourcePartition.get())); + + streamWorkerTaskRefresher = StreamWorkerTaskRefresher.create( + sourceCoordinator, streamPartition, streamCheckpointer, s3Prefix, binlogClientFactory, buffer, + () -> Executors.newSingleThreadExecutor(BackgroundThreadFactory.defaultExecutorThreadFactory("rds-source-stream-worker")), + acknowledgementSetManager, pluginMetrics); + + streamWorkerTaskRefresher.initialize(sourceConfig); + + LOG.debug("Add plugin config observer for refreshing stream worker"); + pluginConfigObservable.addPluginConfigObserver(pluginConfig -> streamWorkerTaskRefresher.update((RdsSourceConfig) pluginConfig)); } try { @@ -107,7 +118,9 @@ public void run() { } public void shutdown() { - executorService.shutdownNow(); + if (streamWorkerTaskRefresher != null) { + streamWorkerTaskRefresher.shutdown(); + } shutdownRequested = true; } } diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamWorkerTaskRefresher.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamWorkerTaskRefresher.java new file mode 100644 index 0000000000..270a4f3fbf --- /dev/null +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamWorkerTaskRefresher.java @@ -0,0 +1,127 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.rds.stream; + +import com.github.shyiko.mysql.binlog.BinaryLogClient; +import io.micrometer.core.instrument.Counter; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginConfigObserver; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; +import org.opensearch.dataprepper.plugins.source.rds.RdsSourceConfig; +import org.opensearch.dataprepper.plugins.source.rds.coordination.partition.StreamPartition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Objects; +import java.util.concurrent.ExecutorService; +import java.util.function.Supplier; + +public class StreamWorkerTaskRefresher implements PluginConfigObserver { + + private static final Logger LOG = LoggerFactory.getLogger(StreamWorkerTaskRefresher.class); + static final String CREDENTIALS_CHANGED = "credentialsChanged"; + static final String TASK_REFRESH_ERRORS = "streamWorkerTaskRefreshErrors"; + + private final EnhancedSourceCoordinator sourceCoordinator; + private final StreamPartition streamPartition; + private final StreamCheckpointer streamCheckpointer; + private final String s3Prefix; + private final BinlogClientFactory binlogClientFactory; + private final Buffer> buffer; + private final Supplier executorServiceSupplier; + private final PluginMetrics pluginMetrics; + private final AcknowledgementSetManager acknowledgementSetManager; + private final Counter credentialsChangeCounter; + private final Counter taskRefreshErrorsCounter; + + private ExecutorService executorService; + private RdsSourceConfig currentSourceConfig; + + public StreamWorkerTaskRefresher(final EnhancedSourceCoordinator sourceCoordinator, + final StreamPartition streamPartition, + final StreamCheckpointer streamCheckpointer, + final String s3Prefix, + final BinlogClientFactory binlogClientFactory, + final Buffer> buffer, + final Supplier executorServiceSupplier, + final AcknowledgementSetManager acknowledgementSetManager, + final PluginMetrics pluginMetrics) { + this.sourceCoordinator = sourceCoordinator; + this.streamPartition = streamPartition; + this.streamCheckpointer = streamCheckpointer; + this.s3Prefix = s3Prefix; + this.buffer = buffer; + this.executorServiceSupplier = executorServiceSupplier; + executorService = executorServiceSupplier.get(); + this.pluginMetrics = pluginMetrics; + this.acknowledgementSetManager = acknowledgementSetManager; + this.binlogClientFactory = binlogClientFactory; + this.credentialsChangeCounter = pluginMetrics.counter(CREDENTIALS_CHANGED); + this.taskRefreshErrorsCounter = pluginMetrics.counter(TASK_REFRESH_ERRORS); + } + + public static StreamWorkerTaskRefresher create(final EnhancedSourceCoordinator sourceCoordinator, + final StreamPartition streamPartition, + final StreamCheckpointer streamCheckpointer, + final String s3Prefix, + final BinlogClientFactory binlogClientFactory, + final Buffer> buffer, + final Supplier executorServiceSupplier, + final AcknowledgementSetManager acknowledgementSetManager, + final PluginMetrics pluginMetrics) { + return new StreamWorkerTaskRefresher(sourceCoordinator, streamPartition, streamCheckpointer, s3Prefix, + binlogClientFactory, buffer, executorServiceSupplier, acknowledgementSetManager, pluginMetrics); + } + + public void initialize(RdsSourceConfig sourceConfig) { + currentSourceConfig = sourceConfig; + refreshTask(sourceConfig); + } + + @Override + public void update(RdsSourceConfig sourceConfig) { + if (basicAuthChanged(sourceConfig.getAuthenticationConfig())) { + LOG.info("Database credentials were updated. Refreshing stream worker..."); + credentialsChangeCounter.increment(); + try { + executorService.shutdownNow(); + executorService = executorServiceSupplier.get(); + binlogClientFactory.setCredentials( + sourceConfig.getAuthenticationConfig().getUsername(), sourceConfig.getAuthenticationConfig().getPassword()); + + refreshTask(sourceConfig); + + currentSourceConfig = sourceConfig; + } catch (Exception e) { + taskRefreshErrorsCounter.increment(); + LOG.error("Refreshing stream worker failed", e); + } + } + LOG.debug("Database credentials were not changed. Skipping..."); + } + + public void shutdown() { + executorService.shutdownNow(); + } + + private void refreshTask(RdsSourceConfig sourceConfig) { + final BinaryLogClient binaryLogClient = binlogClientFactory.create(); + binaryLogClient.registerEventListener(BinlogEventListener.create( + buffer, sourceConfig, s3Prefix, pluginMetrics, binaryLogClient, streamCheckpointer, acknowledgementSetManager)); + final StreamWorker streamWorker = StreamWorker.create(sourceCoordinator, binaryLogClient, pluginMetrics); + executorService.submit(() -> streamWorker.processStream(streamPartition)); + } + + private boolean basicAuthChanged(final RdsSourceConfig.AuthenticationConfig newAuthConfig) { + final RdsSourceConfig.AuthenticationConfig currentAuthConfig = currentSourceConfig.getAuthenticationConfig(); + return !Objects.equals(currentAuthConfig.getUsername(), newAuthConfig.getUsername()) || + !Objects.equals(currentAuthConfig.getPassword(), newAuthConfig.getPassword()); + } +} diff --git a/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/utils/IdentifierShortener.java b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/utils/IdentifierShortener.java new file mode 100644 index 0000000000..66043239e7 --- /dev/null +++ b/data-prepper-plugins/rds-source/src/main/java/org/opensearch/dataprepper/plugins/source/rds/utils/IdentifierShortener.java @@ -0,0 +1,34 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.rds.utils; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Base64; + +public class IdentifierShortener { + + public static String shortenIdentifier(final String identifier, final int maxLength) { + if (identifier.length() <= maxLength) { + return identifier; + } + + try { + // Create SHA-256 hash + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] encodedhash = digest.digest(identifier.getBytes(StandardCharsets.UTF_8)); + + // Convert byte array to Base64 string + String base64Hash = Base64.getUrlEncoder().withoutPadding().encodeToString(encodedhash); + + // Return the first maxLength characters + return base64Hash.substring(0, Math.min(base64Hash.length(), maxLength)); + } catch (final NoSuchAlgorithmException e) { + return identifier.substring(0, maxLength); + } + } +} diff --git a/data-prepper-plugins/rds-source/src/main/resources/org/opensearch/dataprepper/transforms/rules/rds-rule.yaml b/data-prepper-plugins/rds-source/src/main/resources/org/opensearch/dataprepper/transforms/rules/rds-rule.yaml new file mode 100644 index 0000000000..f13f6b6fc4 --- /dev/null +++ b/data-prepper-plugins/rds-source/src/main/resources/org/opensearch/dataprepper/transforms/rules/rds-rule.yaml @@ -0,0 +1,3 @@ +plugin_name: "rds" +apply_when: + - "$..source.rds" \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/main/resources/org/opensearch/dataprepper/transforms/templates/rds-template.yaml b/data-prepper-plugins/rds-source/src/main/resources/org/opensearch/dataprepper/transforms/templates/rds-template.yaml new file mode 100644 index 0000000000..cbd0fec44e --- /dev/null +++ b/data-prepper-plugins/rds-source/src/main/resources/org/opensearch/dataprepper/transforms/templates/rds-template.yaml @@ -0,0 +1,84 @@ +"<>": + workers: "<<$.<>.workers>>" + delay: "<<$.<>.delay>>" + buffer: "<<$.<>.buffer>>" + source: + rds: "<<$.<>.source.rds>>" + routes: + - initial_load: 'getMetadata("ingestion_type") == "EXPORT"' + - stream_load: 'getMetadata("ingestion_type") == "STREAM"' + sink: + - s3: + routes: + - initial_load + aws: + region: "<<$.<>.source.rds.s3_region>>" + sts_role_arn: "<<$.<>.source.rds.aws.sts_role_arn>>" + sts_external_id: "<<$.<>.source.rds.aws.sts_external_id>>" + sts_header_overrides: "<<$.<>.source.rds.aws.sts_header_overrides>>" + bucket: "<<$.<>.source.rds.s3_bucket>>" + threshold: + event_collect_timeout: "120s" + maximum_size: "2mb" + aggregate_threshold: + maximum_size: "128mb" + flush_capacity_ratio: 0 + object_key: + path_prefix: "${getMetadata(\"s3_partition_key\")}" + codec: + event_json: + default_bucket_owner: "<>.source.rds.aws.sts_role_arn>>" + - s3: + routes: + - stream_load + aws: + region: "<<$.<>.source.rds.s3_region>>" + sts_role_arn: "<<$.<>.source.rds.aws.sts_role_arn>>" + sts_external_id: "<<$.<>.source.rds.aws.sts_external_id>>" + sts_header_overrides: "<<$.<>.source.rds.aws.sts_header_overrides>>" + bucket: "<<$.<>.source.rds.s3_bucket>>" + threshold: + event_collect_timeout: "15s" + maximum_size: "1mb" + aggregate_threshold: + maximum_size: "128mb" + flush_capacity_ratio: 0 + object_key: + path_prefix: "${getMetadata(\"s3_partition_key\")}" + codec: + event_json: + default_bucket_owner: "<>.source.rds.aws.sts_role_arn>>" + client: + max_connections: 100 + acquire_timeout: 20s +"<>-s3": + workers: "<<$.<>.workers>>" + delay: "<<$.<>.delay>>" + buffer: "<<$.<>.buffer>>" + source: + s3: + codec: + event_json: + compression: "none" + aws: + region: "<<$.<>.source.rds.s3_region>>" + sts_role_arn: "<<$.<>.source.rds.aws.sts_role_arn>>" + sts_external_id: "<<$.<>.source.rds.aws.sts_external_id>>" + sts_header_overrides: "<<$.<>.source.rds.aws.sts_header_overrides>>" + acknowledgments: true + delete_s3_objects_on_read: true + disable_s3_metadata_in_event: true + scan: + folder_partitions: + depth: "<>.source.rds.s3_prefix>>" + max_objects_per_ownership: 50 + buckets: + - bucket: + name: "<<$.<>.source.rds.s3_bucket>>" + filter: + include_prefix: ["<>.source.rds.s3_prefix>>"] + scheduling: + interval: "60s" + processor: "<<$.<>.processor>>" + sink: "<<$.<>.sink>>" + routes: "<<$.<>.routes>>" # In placeholder, routes or route (defined as alias) will be transformed to route in json as route will be primarily picked in pipelineModel. \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsServiceTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsServiceTest.java index 0a814e7fc1..bbe90c7cf5 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsServiceTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsServiceTest.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Answers; import org.mockito.Mock; +import org.mockito.MockedConstruction; import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.metrics.PluginMetrics; @@ -17,6 +18,7 @@ import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.plugins.source.rds.configuration.TlsConfig; @@ -24,6 +26,7 @@ import org.opensearch.dataprepper.plugins.source.rds.export.ExportScheduler; import org.opensearch.dataprepper.plugins.source.rds.leader.LeaderScheduler; import org.opensearch.dataprepper.plugins.source.rds.stream.StreamScheduler; +import org.opensearch.dataprepper.plugins.source.rds.utils.IdentifierShortener; import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.awssdk.services.rds.model.DBInstance; import software.amazon.awssdk.services.rds.model.DescribeDbInstancesRequest; @@ -34,14 +37,19 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockConstruction; import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.opensearch.dataprepper.plugins.source.rds.RdsService.MAX_SOURCE_IDENTIFIER_LENGTH; +import static org.opensearch.dataprepper.plugins.source.rds.RdsService.S3_PATH_DELIMITER; @ExtendWith(MockitoExtension.class) class RdsServiceTest { @@ -73,6 +81,9 @@ class RdsServiceTest { @Mock private AcknowledgementSetManager acknowledgementSetManager; + @Mock + private PluginConfigObservable pluginConfigObservable; + @BeforeEach void setUp() { when(clientFactory.buildRdsClient()).thenReturn(rdsClient); @@ -131,12 +142,21 @@ void test_normal_service_start_when_stream_is_enabled() { when(sourceConfig.getAuthenticationConfig()).thenReturn(authConfig); when(sourceConfig.getTlsConfig()).thenReturn(mock(TlsConfig.class)); + final String s3Prefix = UUID.randomUUID().toString(); + final String partitionPrefix = UUID.randomUUID().toString(); + when(sourceConfig.getS3Prefix()).thenReturn(s3Prefix); + when(sourceCoordinator.getPartitionPrefix()).thenReturn(partitionPrefix); + final RdsService rdsService = createObjectUnderTest(); - try (final MockedStatic executorsMockedStatic = mockStatic(Executors.class)) { + final String[] s3PrefixArray = new String[1]; + try (final MockedStatic executorsMockedStatic = mockStatic(Executors.class); + final MockedConstruction leaderSchedulerMockedConstruction = mockConstruction(LeaderScheduler.class, + (mock, context) -> s3PrefixArray[0] = (String) context.arguments().get(2))) { executorsMockedStatic.when(() -> Executors.newFixedThreadPool(anyInt())).thenReturn(executor); rdsService.start(buffer); } + assertThat(s3PrefixArray[0], equalTo(s3Prefix + S3_PATH_DELIMITER + IdentifierShortener.shortenIdentifier(partitionPrefix, MAX_SOURCE_IDENTIFIER_LENGTH))); verify(executor).submit(any(LeaderScheduler.class)); verify(executor).submit(any(StreamScheduler.class)); verify(executor, never()).submit(any(ExportScheduler.class)); @@ -170,6 +190,6 @@ void test_service_shutdown_calls_executor_shutdownNow() { } private RdsService createObjectUnderTest() { - return new RdsService(sourceCoordinator, sourceConfig, eventFactory, clientFactory, pluginMetrics, acknowledgementSetManager); + return new RdsService(sourceCoordinator, sourceConfig, eventFactory, clientFactory, pluginMetrics, acknowledgementSetManager, pluginConfigObservable); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceTest.java index f414173b05..919fe00292 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/RdsSourceTest.java @@ -14,6 +14,7 @@ import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.event.EventFactory; +import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; import org.opensearch.dataprepper.plugins.source.rds.configuration.AwsAuthenticationConfig; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -41,6 +42,9 @@ class RdsSourceTest { @Mock private AcknowledgementSetManager acknowledgementSetManager; + @Mock + private PluginConfigObservable pluginConfigObservable; + @BeforeEach void setUp() { when(sourceConfig.getAwsAuthenticationConfig()).thenReturn(awsAuthenticationConfig); @@ -53,6 +57,7 @@ void test_when_buffer_is_null_then_start_throws_exception() { } private RdsSource createObjectUnderTest() { - return new RdsSource(pluginMetrics, sourceConfig, eventFactory, awsCredentialsSupplier, acknowledgementSetManager); + return new RdsSource( + pluginMetrics, sourceConfig, eventFactory, awsCredentialsSupplier, acknowledgementSetManager, pluginConfigObservable); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverterTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverterTest.java index 564fde166b..027138c85a 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverterTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/ExportRecordConverterTest.java @@ -13,7 +13,6 @@ import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.event.EventBuilder; import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; -import org.opensearch.dataprepper.model.record.Record; import java.util.List; import java.util.Map; @@ -22,25 +21,33 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.sameInstance; -import static org.opensearch.dataprepper.plugins.source.rds.converter.ExportRecordConverter.EXPORT_EVENT_TYPE; +import static org.hamcrest.Matchers.startsWith; +import static org.opensearch.dataprepper.plugins.source.rds.converter.ExportRecordConverter.EXPORT_INGESTION_TYPE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.BULK_ACTION_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_DATABASE_NAME_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_S3_PARTITION_KEY; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TABLE_NAME_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TIMESTAMP_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_VERSION_FROM_TIMESTAMP; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.INGESTION_EVENT_TYPE_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.RecordConverter.S3_BUFFER_PREFIX; +import static org.opensearch.dataprepper.plugins.source.rds.converter.RecordConverter.S3_PATH_DELIMITER; @ExtendWith(MockitoExtension.class) class ExportRecordConverterTest { private Random random; + private String s3Prefix; private ExportRecordConverter exportRecordConverter; @BeforeEach void setUp() { random = new Random(); + s3Prefix = UUID.randomUUID().toString(); exportRecordConverter = createObjectUnderTest(); } @@ -49,6 +56,7 @@ void test_convert() { final String databaseName = UUID.randomUUID().toString(); final String tableName = UUID.randomUUID().toString(); final String primaryKeyName = UUID.randomUUID().toString(); + final List primaryKeys = List.of(primaryKeyName); final String primaryKeyValue = UUID.randomUUID().toString(); final long eventCreateTimeEpochMillis = random.nextLong(); final long eventVersionNumber = random.nextLong(); @@ -58,24 +66,24 @@ void test_convert() { .withData(Map.of(primaryKeyName, primaryKeyValue)) .build(); - Record testRecord = new Record<>(testEvent); - - ExportRecordConverter exportRecordConverter = new ExportRecordConverter(); Event actualEvent = exportRecordConverter.convert( - testRecord, databaseName, tableName, List.of(primaryKeyName), eventCreateTimeEpochMillis, eventVersionNumber); + testEvent, databaseName, tableName, OpenSearchBulkActions.INDEX, primaryKeys, + eventCreateTimeEpochMillis, eventVersionNumber, null); // Assert assertThat(actualEvent.getMetadata().getAttribute(EVENT_DATABASE_NAME_METADATA_ATTRIBUTE), equalTo(databaseName)); assertThat(actualEvent.getMetadata().getAttribute(EVENT_TABLE_NAME_METADATA_ATTRIBUTE), equalTo(tableName)); assertThat(actualEvent.getMetadata().getAttribute(BULK_ACTION_METADATA_ATTRIBUTE), equalTo(OpenSearchBulkActions.INDEX.toString())); assertThat(actualEvent.getMetadata().getAttribute(PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE), equalTo(primaryKeyValue)); - assertThat(actualEvent.getMetadata().getAttribute(INGESTION_EVENT_TYPE_ATTRIBUTE), equalTo(EXPORT_EVENT_TYPE)); + assertThat(actualEvent.getMetadata().getAttribute(INGESTION_EVENT_TYPE_ATTRIBUTE), equalTo(EXPORT_INGESTION_TYPE)); + assertThat(actualEvent.getMetadata().getAttribute(EVENT_S3_PARTITION_KEY).toString(), startsWith(s3Prefix + S3_PATH_DELIMITER + S3_BUFFER_PREFIX + S3_PATH_DELIMITER)); assertThat(actualEvent.getMetadata().getAttribute(EVENT_TIMESTAMP_METADATA_ATTRIBUTE), equalTo(eventCreateTimeEpochMillis)); assertThat(actualEvent.getMetadata().getAttribute(EVENT_VERSION_FROM_TIMESTAMP), equalTo(eventVersionNumber)); - assertThat(actualEvent, sameInstance(testRecord.getData())); + assertThat(actualEvent.getMetadata().getAttribute(CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE), nullValue()); + assertThat(actualEvent, sameInstance(testEvent)); } private ExportRecordConverter createObjectUnderTest() { - return new ExportRecordConverter(); + return new ExportRecordConverter(s3Prefix, random.nextInt(1000) + 1); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverterTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverterTest.java index 8b857bcf4f..c33a53e667 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverterTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/converter/StreamRecordConverterTest.java @@ -8,7 +8,9 @@ import com.github.shyiko.mysql.binlog.event.EventType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.opensearch.dataprepper.event.TestEventFactory; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.EventBuilder; import org.opensearch.dataprepper.model.opensearch.OpenSearchBulkActions; import java.util.List; @@ -17,7 +19,9 @@ import java.util.UUID; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.sameInstance; import static org.hamcrest.Matchers.startsWith; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.BULK_ACTION_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE; @@ -26,7 +30,10 @@ import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TABLE_NAME_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_TIMESTAMP_METADATA_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.EVENT_VERSION_FROM_TIMESTAMP; +import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.INGESTION_EVENT_TYPE_ATTRIBUTE; import static org.opensearch.dataprepper.plugins.source.rds.converter.MetadataKeyAttributes.PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE; +import static org.opensearch.dataprepper.plugins.source.rds.converter.RecordConverter.S3_BUFFER_PREFIX; +import static org.opensearch.dataprepper.plugins.source.rds.converter.RecordConverter.STREAM_INGESTION_TYPE; import static org.opensearch.dataprepper.plugins.source.rds.converter.StreamRecordConverter.S3_PATH_DELIMITER; @@ -34,11 +41,13 @@ class StreamRecordConverterTest { private StreamRecordConverter streamRecordConverter; private Random random; + private String s3Prefix; @BeforeEach void setUp() { - streamRecordConverter = createObjectUnderTest(); random = new Random(); + s3Prefix = UUID.randomUUID().toString(); + streamRecordConverter = createObjectUnderTest(); } @Test @@ -49,13 +58,17 @@ void test_convert_returns_expected_event() { final EventType eventType = EventType.EXT_WRITE_ROWS; final OpenSearchBulkActions bulkAction = OpenSearchBulkActions.INDEX; final List primaryKeys = List.of("key1"); - final String s3Prefix = UUID.randomUUID().toString(); final long eventCreateTimeEpochMillis = random.nextLong(); final long eventVersionNumber = random.nextLong(); + final Event testEvent = TestEventFactory.getTestEventFactory().eventBuilder(EventBuilder.class) + .withEventType("event") + .withData(rowData) + .build(); + Event event = streamRecordConverter.convert( - rowData, databaseName, tableName, eventType, bulkAction, - primaryKeys, s3Prefix, eventCreateTimeEpochMillis, eventVersionNumber); + testEvent, databaseName, tableName, bulkAction, primaryKeys, + eventCreateTimeEpochMillis, eventVersionNumber, eventType); assertThat(event.toMap(), is(rowData)); assertThat(event.getMetadata().getAttribute(EVENT_DATABASE_NAME_METADATA_ATTRIBUTE), is(databaseName)); @@ -63,12 +76,14 @@ void test_convert_returns_expected_event() { assertThat(event.getMetadata().getAttribute(CHANGE_EVENT_TYPE_METADATA_ATTRIBUTE), is(eventType.toString())); assertThat(event.getMetadata().getAttribute(BULK_ACTION_METADATA_ATTRIBUTE), is(bulkAction.toString())); assertThat(event.getMetadata().getAttribute(PRIMARY_KEY_DOCUMENT_ID_METADATA_ATTRIBUTE), is("value1")); - assertThat(event.getMetadata().getAttribute(EVENT_S3_PARTITION_KEY).toString(), startsWith(s3Prefix + S3_PATH_DELIMITER)); + assertThat(event.getMetadata().getAttribute(INGESTION_EVENT_TYPE_ATTRIBUTE), equalTo(STREAM_INGESTION_TYPE)); + assertThat(event.getMetadata().getAttribute(EVENT_S3_PARTITION_KEY).toString(), startsWith(s3Prefix + S3_PATH_DELIMITER + S3_BUFFER_PREFIX + S3_PATH_DELIMITER)); assertThat(event.getMetadata().getAttribute(EVENT_TIMESTAMP_METADATA_ATTRIBUTE), is(eventCreateTimeEpochMillis)); assertThat(event.getMetadata().getAttribute(EVENT_VERSION_FROM_TIMESTAMP), is(eventVersionNumber)); + assertThat(event, sameInstance(testEvent)); } private StreamRecordConverter createObjectUnderTest() { - return new StreamRecordConverter(new Random().nextInt(1000) + 1); + return new StreamRecordConverter(s3Prefix, random.nextInt(1000) + 1); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoaderTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoaderTest.java index c470021c6b..656e393cee 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoaderTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileLoaderTest.java @@ -130,7 +130,7 @@ void test_run_success() throws Exception { when(eventFactory.eventBuilder(any())).thenReturn(eventBuilder); when(eventBuilder.withEventType(any()).withData(any()).build()).thenReturn(event); when(event.toJsonString()).thenReturn(randomString); - when(recordConverter.convert(any(), any(), any(), any(), anyLong(), anyLong())).thenReturn(event); + when(recordConverter.convert(any(), any(), any(), any(), any(), anyLong(), anyLong(), any())).thenReturn(event); AvroParquetReader.Builder builder = mock(AvroParquetReader.Builder.class); ParquetReader parquetReader = mock(ParquetReader.class); @@ -180,7 +180,7 @@ void test_flush_failure_then_error_metric_updated() throws Exception { when(eventBuilder.withEventType(any()).withData(any()).build()).thenReturn(event); when(event.toJsonString()).thenReturn(randomString); - when(recordConverter.convert(any(), any(), any(), any(), anyLong(), anyLong())).thenReturn(event); + when(recordConverter.convert(any(), any(), any(), any(), any(), anyLong(), anyLong(), any())).thenReturn(event); ParquetReader parquetReader = mock(ParquetReader.class); AvroParquetReader.Builder builder = mock(AvroParquetReader.Builder.class); diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileSchedulerTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileSchedulerTest.java index f249e0b025..96a45588c8 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileSchedulerTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/export/DataFileSchedulerTest.java @@ -88,10 +88,12 @@ class DataFileSchedulerTest { private AtomicInteger activeExportS3ObjectConsumersGauge; private Random random; + private String s3Prefix; @BeforeEach void setUp() { random = new Random(); + s3Prefix = UUID.randomUUID().toString(); when(pluginMetrics.counter(EXPORT_S3_OBJECTS_PROCESSED_COUNT)).thenReturn(exportFileSuccessCounter); when(pluginMetrics.counter(eq(DataFileScheduler.EXPORT_S3_OBJECTS_ERROR_COUNT))).thenReturn(exportFileErrorCounter); when(pluginMetrics.gauge(eq(ACTIVE_EXPORT_S3_OBJECT_CONSUMERS_GAUGE), any(AtomicInteger.class), any())) @@ -192,6 +194,6 @@ void test_shutdown() { } private DataFileScheduler createObjectUnderTest() { - return new DataFileScheduler(sourceCoordinator, sourceConfig, s3Client, eventFactory, buffer, pluginMetrics, acknowledgementSetManager); + return new DataFileScheduler(sourceCoordinator, sourceConfig, s3Prefix, s3Client, eventFactory, buffer, pluginMetrics, acknowledgementSetManager); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderSchedulerTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderSchedulerTest.java index e4b9cb1304..11381c8a23 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderSchedulerTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/leader/LeaderSchedulerTest.java @@ -60,10 +60,12 @@ class LeaderSchedulerTest { @Mock private LeaderProgressState leaderProgressState; + private String s3Prefix; private LeaderScheduler leaderScheduler; @BeforeEach void setUp() { + s3Prefix = UUID.randomUUID().toString(); leaderScheduler = createObjectUnderTest(); AwsAuthenticationConfig awsAuthenticationConfig = mock(AwsAuthenticationConfig.class); @@ -138,6 +140,6 @@ void test_shutDown() { } private LeaderScheduler createObjectUnderTest() { - return new LeaderScheduler(sourceCoordinator, sourceConfig, schemaManager, dbMetadata); + return new LeaderScheduler(sourceCoordinator, sourceConfig, s3Prefix, schemaManager, dbMetadata); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKeyTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKeyTest.java index 697d721c9b..18a66bd6e2 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKeyTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/model/ExportObjectKeyTest.java @@ -27,9 +27,35 @@ void test_fromString_with_valid_input_string() { assertThat(exportObjectKey.getFileName(), equalTo("file-name.parquet")); } + @Test + void test_fromString_with_path_with_empty_prefix() { + final String objectKeyString = "export-task-id/db-name/db-name.table-name/1/file-name.parquet"; + final ExportObjectKey exportObjectKey = ExportObjectKey.fromString(objectKeyString); + + assertThat(exportObjectKey.getPrefix(), equalTo("")); + assertThat(exportObjectKey.getExportTaskId(), equalTo("export-task-id")); + assertThat(exportObjectKey.getDatabaseName(), equalTo("db-name")); + assertThat(exportObjectKey.getTableName(), equalTo("table-name")); + assertThat(exportObjectKey.getNumberedFolder(), equalTo("1")); + assertThat(exportObjectKey.getFileName(), equalTo("file-name.parquet")); + } + + @Test + void test_fromString_with_path_with_multilevel_prefix() { + final String objectKeyString = "prefix1/prefix2/prefix3/export-task-id/db-name/db-name.table-name/1/file-name.parquet"; + final ExportObjectKey exportObjectKey = ExportObjectKey.fromString(objectKeyString); + + assertThat(exportObjectKey.getPrefix(), equalTo("prefix1/prefix2/prefix3")); + assertThat(exportObjectKey.getExportTaskId(), equalTo("export-task-id")); + assertThat(exportObjectKey.getDatabaseName(), equalTo("db-name")); + assertThat(exportObjectKey.getTableName(), equalTo("table-name")); + assertThat(exportObjectKey.getNumberedFolder(), equalTo("1")); + assertThat(exportObjectKey.getFileName(), equalTo("file-name.parquet")); + } + @Test void test_fromString_with_invalid_input_string() { - final String objectKeyString = "prefix/export-task-id/db-name/table-name/1/"; + final String objectKeyString = "export-task-id/db-name/table-name/1"; Throwable exception = assertThrows(IllegalArgumentException.class, () -> ExportObjectKey.fromString(objectKeyString)); assertThat(exception.getMessage(), containsString("Export object key is not valid: " + objectKeyString)); diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactoryTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactoryTest.java index 326ea4eb67..53ef6028db 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactoryTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogClientFactoryTest.java @@ -5,25 +5,24 @@ package org.opensearch.dataprepper.plugins.source.rds.stream; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Answers; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.dataprepper.plugins.source.rds.RdsSourceConfig; import org.opensearch.dataprepper.plugins.source.rds.model.DbMetadata; import software.amazon.awssdk.services.rds.RdsClient; -import java.util.Random; +import java.util.UUID; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class BinlogClientFactoryTest { - @Mock + @Mock(answer = Answers.RETURNS_DEEP_STUBS) private RdsSourceConfig sourceConfig; @Mock @@ -33,28 +32,22 @@ class BinlogClientFactoryTest { private DbMetadata dbMetadata; private BinlogClientFactory binlogClientFactory; - private Random random; - - @BeforeEach - void setUp() { - binlogClientFactory = createBinlogClientFactory(); - random = new Random(); - } @Test void test_create() { - final RdsSourceConfig.AuthenticationConfig authenticationConfig = mock(RdsSourceConfig.AuthenticationConfig.class); - when(sourceConfig.getAuthenticationConfig()).thenReturn(authenticationConfig); + final String username = UUID.randomUUID().toString(); + final String password = UUID.randomUUID().toString(); + when(sourceConfig.getAuthenticationConfig().getUsername()).thenReturn(username); + when(sourceConfig.getAuthenticationConfig().getPassword()).thenReturn(password); + binlogClientFactory = createObjectUnderTest(); binlogClientFactory.create(); verify(dbMetadata).getHostName(); verify(dbMetadata).getPort(); - verify(authenticationConfig).getUsername(); - verify(authenticationConfig).getPassword(); } - private BinlogClientFactory createBinlogClientFactory() { + private BinlogClientFactory createObjectUnderTest() { return new BinlogClientFactory(sourceConfig, rdsClient, dbMetadata); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListenerTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListenerTest.java index c287ec2f00..1312607821 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListenerTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/BinlogEventListenerTest.java @@ -16,6 +16,7 @@ import org.junit.jupiter.params.provider.EnumSource; import org.mockito.Answers; import org.mockito.ArgumentCaptor; +import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; @@ -26,6 +27,8 @@ import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.plugins.source.rds.RdsSourceConfig; +import java.io.IOException; +import java.util.UUID; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; @@ -33,6 +36,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -72,12 +76,15 @@ class BinlogEventListenerTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private com.github.shyiko.mysql.binlog.event.Event binlogEvent; + private String s3Prefix; + private BinlogEventListener objectUnderTest; private Timer eventProcessingTimer; @BeforeEach void setUp() { + s3Prefix = UUID.randomUUID().toString(); eventProcessingTimer = Metrics.timer("test-timer"); when(pluginMetrics.timer(REPLICATION_LOG_EVENT_PROCESSING_TIME)).thenReturn(eventProcessingTimer); try (final MockedStatic executorsMockedStatic = mockStatic(Executors.class)) { @@ -99,6 +106,16 @@ void test_given_TableMap_event_then_calls_correct_handler() { verify(objectUnderTest).handleTableMapEvent(binlogEvent); } + @Test + void test_stopClient() throws IOException { + objectUnderTest.stopClient(); + + InOrder inOrder = inOrder(binaryLogClient, eventListnerExecutorService); + inOrder.verify(binaryLogClient).disconnect(); + inOrder.verify(binaryLogClient).unregisterEventListener(objectUnderTest); + inOrder.verify(eventListnerExecutorService).shutdownNow(); + } + @ParameterizedTest @EnumSource(names = {"WRITE_ROWS", "EXT_WRITE_ROWS"}) void test_given_WriteRows_event_then_calls_correct_handler(EventType eventType) { @@ -136,7 +153,7 @@ void test_given_DeleteRows_event_then_calls_correct_handler(EventType eventType) } private BinlogEventListener createObjectUnderTest() { - return new BinlogEventListener(buffer, sourceConfig, pluginMetrics, binaryLogClient, streamCheckpointer, acknowledgementSetManager); + return new BinlogEventListener(buffer, sourceConfig, s3Prefix, pluginMetrics, binaryLogClient, streamCheckpointer, acknowledgementSetManager); } private void verifyHandlerCallHelper() { diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamSchedulerTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamSchedulerTest.java index 0414495f6c..fc0ac8268a 100644 --- a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamSchedulerTest.java +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamSchedulerTest.java @@ -5,7 +5,6 @@ package org.opensearch.dataprepper.plugins.source.rds.stream; -import com.github.shyiko.mysql.binlog.BinaryLogClient; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -17,6 +16,8 @@ import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.plugin.PluginConfigObservable; +import org.opensearch.dataprepper.model.plugin.PluginConfigObserver; import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; import org.opensearch.dataprepper.plugins.source.rds.RdsSourceConfig; @@ -24,11 +25,14 @@ import java.time.Duration; import java.util.Optional; +import java.util.UUID; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.function.Supplier; import static org.awaitility.Awaitility.await; -import static org.mockito.Mockito.doNothing; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; @@ -47,7 +51,7 @@ class StreamSchedulerTest { private RdsSourceConfig sourceConfig; @Mock - private BinaryLogClient binaryLogClient; + private BinlogClientFactory binlogClientFactory; @Mock private PluginMetrics pluginMetrics; @@ -58,10 +62,18 @@ class StreamSchedulerTest { @Mock private AcknowledgementSetManager acknowledgementSetManager; + @Mock + private PluginConfigObservable pluginConfigObservable; + + @Mock + private StreamWorkerTaskRefresher streamWorkerTaskRefresher; + + private String s3Prefix; private StreamScheduler objectUnderTest; @BeforeEach void setUp() { + s3Prefix = UUID.randomUUID().toString(); objectUnderTest = createObjectUnderTest(); } @@ -76,7 +88,7 @@ void test_given_no_stream_partition_then_no_stream_actions() throws InterruptedE Thread.sleep(100); executorService.shutdownNow(); - verifyNoInteractions(binaryLogClient); + verifyNoInteractions(binlogClientFactory, pluginConfigObservable); } @Test @@ -84,15 +96,12 @@ void test_given_stream_partition_then_start_stream() throws InterruptedException final StreamPartition streamPartition = mock(StreamPartition.class); when(sourceCoordinator.acquireAvailablePartition(StreamPartition.PARTITION_TYPE)).thenReturn(Optional.of(streamPartition)); - StreamWorker streamWorker = mock(StreamWorker.class); - doNothing().when(streamWorker).processStream(streamPartition); - when(sourceConfig.getStream().getNumWorkers()).thenReturn(1); - final ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.submit(() -> { - try (MockedStatic streamWorkerMockedStatic = mockStatic(StreamWorker.class)) { - streamWorkerMockedStatic.when(() -> StreamWorker.create(sourceCoordinator, binaryLogClient, pluginMetrics)) - .thenReturn(streamWorker); + try (MockedStatic streamWorkerTaskRefresherMockedStatic = mockStatic(StreamWorkerTaskRefresher.class)) { + streamWorkerTaskRefresherMockedStatic.when(() -> StreamWorkerTaskRefresher.create(eq(sourceCoordinator), eq(streamPartition), any(StreamCheckpointer.class), + eq(s3Prefix), eq(binlogClientFactory), eq(buffer), any(Supplier.class), eq(acknowledgementSetManager), eq(pluginMetrics))) + .thenReturn(streamWorkerTaskRefresher); objectUnderTest.run(); } @@ -102,21 +111,24 @@ void test_given_stream_partition_then_start_stream() throws InterruptedException Thread.sleep(100); executorService.shutdownNow(); - verify(streamWorker).processStream(streamPartition); + verify(streamWorkerTaskRefresher).initialize(sourceConfig); + verify(pluginConfigObservable).addPluginConfigObserver(any(PluginConfigObserver.class)); } @Test - void test_shutdown() { + void test_shutdown() throws InterruptedException { lenient().when(sourceCoordinator.acquireAvailablePartition(StreamPartition.PARTITION_TYPE)).thenReturn(Optional.empty()); final ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.submit(objectUnderTest); objectUnderTest.shutdown(); + Thread.sleep(100); verifyNoMoreInteractions(sourceCoordinator); executorService.shutdownNow(); } private StreamScheduler createObjectUnderTest() { - return new StreamScheduler(sourceCoordinator, sourceConfig, binaryLogClient, buffer, pluginMetrics, acknowledgementSetManager); + return new StreamScheduler( + sourceCoordinator, sourceConfig, s3Prefix, binlogClientFactory, buffer, pluginMetrics, acknowledgementSetManager, pluginConfigObservable); } } \ No newline at end of file diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamWorkerTaskRefresherTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamWorkerTaskRefresherTest.java new file mode 100644 index 0000000000..13078e65cb --- /dev/null +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/stream/StreamWorkerTaskRefresherTest.java @@ -0,0 +1,200 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.rds.stream; + +import com.github.shyiko.mysql.binlog.BinaryLogClient; +import io.micrometer.core.instrument.Counter; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Answers; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.dataprepper.metrics.PluginMetrics; +import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; +import org.opensearch.dataprepper.model.buffer.Buffer; +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.record.Record; +import org.opensearch.dataprepper.model.source.coordinator.enhanced.EnhancedSourceCoordinator; +import org.opensearch.dataprepper.plugins.source.rds.RdsSourceConfig; +import org.opensearch.dataprepper.plugins.source.rds.coordination.partition.StreamPartition; + +import java.util.UUID; +import java.util.concurrent.ExecutorService; +import java.util.function.Supplier; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.RETURNS_DEEP_STUBS; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.opensearch.dataprepper.plugins.source.rds.stream.StreamWorkerTaskRefresher.CREDENTIALS_CHANGED; +import static org.opensearch.dataprepper.plugins.source.rds.stream.StreamWorkerTaskRefresher.TASK_REFRESH_ERRORS; + +@ExtendWith(MockitoExtension.class) +class StreamWorkerTaskRefresherTest { + + @Mock + private EnhancedSourceCoordinator sourceCoordinator; + + @Mock + private PluginMetrics pluginMetrics; + + @Mock + private StreamPartition streamPartition; + + @Mock + private StreamCheckpointer streamCheckpointer; + + @Mock + private BinlogClientFactory binlogClientFactory; + + @Mock + private BinaryLogClient binlogClient; + + @Mock + private Buffer> buffer; + + @Mock + private AcknowledgementSetManager acknowledgementSetManager; + + @Mock + private ExecutorService executorService; + + @Mock + private ExecutorService newExecutorService; + + @Mock + private Supplier executorServiceSupplier; + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private RdsSourceConfig sourceConfig; + + @Mock + private StreamWorker streamWorker; + + @Mock + private Counter credentialsChangeCounter; + + @Mock + private Counter taskRefreshErrorsCounter; + + @Mock + private BinlogEventListener binlogEventListener; + + private StreamWorkerTaskRefresher streamWorkerTaskRefresher; + + @BeforeEach + void setUp() { + when(pluginMetrics.counter(CREDENTIALS_CHANGED)).thenReturn(credentialsChangeCounter); + when(pluginMetrics.counter(TASK_REFRESH_ERRORS)).thenReturn(taskRefreshErrorsCounter); + when(executorServiceSupplier.get()).thenReturn(executorService).thenReturn(newExecutorService); + streamWorkerTaskRefresher = createObjectUnderTest(); + } + + @Test + void test_initialize_then_process_stream() { + when(binlogClientFactory.create()).thenReturn(binlogClient); + try (MockedStatic streamWorkerMockedStatic = mockStatic(StreamWorker.class); + MockedStatic binlogEventListenerMockedStatic = mockStatic(BinlogEventListener.class)) { + streamWorkerMockedStatic.when(() -> StreamWorker.create(eq(sourceCoordinator), any(BinaryLogClient.class), eq(pluginMetrics))) + .thenReturn(streamWorker); + binlogEventListenerMockedStatic.when(() -> BinlogEventListener.create(eq(buffer), any(RdsSourceConfig.class), any(String.class), eq(pluginMetrics), eq(binlogClient), eq(streamCheckpointer), eq(acknowledgementSetManager))) + .thenReturn(binlogEventListener); + streamWorkerTaskRefresher.initialize(sourceConfig); + } + + verify(binlogClientFactory).create(); + verify(binlogClient).registerEventListener(binlogEventListener); + + ArgumentCaptor runnableArgumentCaptor = ArgumentCaptor.forClass(Runnable.class); + verify(executorService).submit(runnableArgumentCaptor.capture()); + + Runnable capturedRunnable = runnableArgumentCaptor.getValue(); + capturedRunnable.run(); + verify(streamWorker).processStream(streamPartition); + } + + @Test + void test_update_when_credentials_changed_then_refresh_task() { + final String username = UUID.randomUUID().toString(); + final String password = UUID.randomUUID().toString(); + when(sourceConfig.getAuthenticationConfig().getUsername()).thenReturn(username); + when(sourceConfig.getAuthenticationConfig().getPassword()).thenReturn(password); + + RdsSourceConfig sourceConfig2 = mock(RdsSourceConfig.class, RETURNS_DEEP_STUBS); + final String password2 = UUID.randomUUID().toString(); + when(sourceConfig2.getAuthenticationConfig().getUsername()).thenReturn(username); + when(sourceConfig2.getAuthenticationConfig().getPassword()).thenReturn(password2); + + when(binlogClientFactory.create()).thenReturn(binlogClient).thenReturn(binlogClient); + + try (MockedStatic streamWorkerMockedStatic = mockStatic(StreamWorker.class); + MockedStatic binlogEventListenerMockedStatic = mockStatic(BinlogEventListener.class)) { + streamWorkerMockedStatic.when(() -> StreamWorker.create(eq(sourceCoordinator), any(BinaryLogClient.class), eq(pluginMetrics))) + .thenReturn(streamWorker); + binlogEventListenerMockedStatic.when(() -> BinlogEventListener.create(eq(buffer), any(RdsSourceConfig.class), any(String.class), eq(pluginMetrics), eq(binlogClient), eq(streamCheckpointer), eq(acknowledgementSetManager))) + .thenReturn(binlogEventListener); + streamWorkerTaskRefresher.initialize(sourceConfig); + streamWorkerTaskRefresher.update(sourceConfig2); + } + + verify(credentialsChangeCounter).increment(); + verify(executorService).shutdownNow(); + + verify(binlogClientFactory, times(2)).create(); + verify(binlogClient, times(2)).registerEventListener(binlogEventListener); + + ArgumentCaptor runnableArgumentCaptor = ArgumentCaptor.forClass(Runnable.class); + verify(newExecutorService).submit(runnableArgumentCaptor.capture()); + + Runnable capturedRunnable = runnableArgumentCaptor.getValue(); + capturedRunnable.run(); + verify(streamWorker).processStream(streamPartition); + } + + @Test + void test_update_when_credentials_unchanged_then_do_nothing() { + final String username = UUID.randomUUID().toString(); + final String password = UUID.randomUUID().toString(); + when(sourceConfig.getAuthenticationConfig().getUsername()).thenReturn(username); + when(sourceConfig.getAuthenticationConfig().getPassword()).thenReturn(password); + + when(binlogClientFactory.create()).thenReturn(binlogClient); + + try (MockedStatic streamWorkerMockedStatic = mockStatic(StreamWorker.class); + MockedStatic binlogEventListenerMockedStatic = mockStatic(BinlogEventListener.class)) { + streamWorkerMockedStatic.when(() -> StreamWorker.create(eq(sourceCoordinator), any(BinaryLogClient.class), eq(pluginMetrics))) + .thenReturn(streamWorker); + binlogEventListenerMockedStatic.when(() -> BinlogEventListener.create(eq(buffer), any(RdsSourceConfig.class), any(String.class), eq(pluginMetrics), eq(binlogClient), eq(streamCheckpointer), eq(acknowledgementSetManager))) + .thenReturn(binlogEventListener); + streamWorkerTaskRefresher.initialize(sourceConfig); + streamWorkerTaskRefresher.update(sourceConfig); + } + + verify(credentialsChangeCounter, never()).increment(); + verify(executorService, never()).shutdownNow(); + } + + @Test + void test_shutdown() { + streamWorkerTaskRefresher.shutdown(); + verify(executorService).shutdownNow(); + } + + private StreamWorkerTaskRefresher createObjectUnderTest() { + final String s3Prefix = UUID.randomUUID().toString(); + + return new StreamWorkerTaskRefresher( + sourceCoordinator, streamPartition, streamCheckpointer, s3Prefix, binlogClientFactory, buffer, executorServiceSupplier, acknowledgementSetManager, pluginMetrics); + } +} diff --git a/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/utils/IdentifierShortenerTest.java b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/utils/IdentifierShortenerTest.java new file mode 100644 index 0000000000..5327f59926 --- /dev/null +++ b/data-prepper-plugins/rds-source/src/test/java/org/opensearch/dataprepper/plugins/source/rds/utils/IdentifierShortenerTest.java @@ -0,0 +1,59 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.source.rds.utils; + +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.UUID; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.lessThanOrEqualTo; +import static org.mockito.Mockito.mockStatic; + +class IdentifierShortenerTest { + + @Test + void shortenIdentifier_when_input_is_shorter_than_max_then_return_original_input() { + final int maxLength = 10; + final String testInput = UUID.randomUUID().toString().substring(0, maxLength); + + final String result = IdentifierShortener.shortenIdentifier(testInput, maxLength); + + assertThat(result, equalTo(testInput)); + } + + @Test + void shortenIdentifier_when_input_is_longer_than_max_then_return_shortened_result() { + final int maxLength = 5; + final String testInput = UUID.randomUUID().toString(); + assertThat(testInput.length(), greaterThan(maxLength)); + + final String result = IdentifierShortener.shortenIdentifier(testInput, maxLength); + + assertThat(result.length(), lessThanOrEqualTo(maxLength)); + } + + @Test + void shortenIdentifier_when_NoSuchAlgorithmException_then_return_shortened_result() { + final int maxLength = 5; + final String testInput = UUID.randomUUID().toString(); + assertThat(testInput.length(), greaterThan(maxLength)); + + try (MockedStatic messageDigestMockedStatic = mockStatic(MessageDigest.class)) { + messageDigestMockedStatic.when(() -> MessageDigest.getInstance("SHA-256")) + .thenThrow(new NoSuchAlgorithmException()); + final String result = IdentifierShortener.shortenIdentifier(testInput, maxLength); + assertThat(result, equalTo(testInput.substring(0, maxLength))); + } + + + } +} \ No newline at end of file diff --git a/data-prepper-plugins/s3-sink/build.gradle b/data-prepper-plugins/s3-sink/build.gradle index 57198bf274..8dd6b5783d 100644 --- a/data-prepper-plugins/s3-sink/build.gradle +++ b/data-prepper-plugins/s3-sink/build.gradle @@ -14,9 +14,10 @@ dependencies { implementation 'joda-time:joda-time:2.12.7' implementation 'org.hibernate.validator:hibernate-validator:8.0.1.Final' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv' + implementation 'software.amazon.awssdk:netty-nio-client' implementation 'software.amazon.awssdk:s3' implementation 'software.amazon.awssdk:sts' - implementation 'software.amazon.awssdk:securitylake:2.26.18' + implementation 'software.amazon.awssdk:securitylake' implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.9.22' implementation project(':data-prepper-plugins:avro-codecs') implementation libs.avro.core diff --git a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/JsonOutputScenario.java b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/JsonOutputScenario.java new file mode 100644 index 0000000000..cf62024081 --- /dev/null +++ b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/JsonOutputScenario.java @@ -0,0 +1,56 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.sink.s3; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.opensearch.dataprepper.model.codec.OutputCodec; +import org.opensearch.dataprepper.plugins.codec.json.JsonOutputCodec; +import org.opensearch.dataprepper.plugins.codec.json.JsonOutputCodecConfig; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +public class JsonOutputScenario implements OutputScenario { + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + @Override + public OutputCodec getCodec() { + return new JsonOutputCodec(new JsonOutputCodecConfig()); + } + + @Override + public void validate(int expectedRecords, List> sampleEventData, File actualContentFile, CompressionScenario compressionScenario) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public void validateDynamicPartition(int expectedRecords, int partitionNumber, File actualContentFile, CompressionScenario compressionScenario) throws IOException { + JsonNode jsonArray = OBJECT_MAPPER.readTree(actualContentFile).get("events"); + + int count = 0; + for (final JsonNode eventNode : jsonArray) { + final Integer sequence = eventNode.get("sequence").intValue(); + assertThat(sequence, equalTo(partitionNumber)); + count++; + } + + if (expectedRecords != -1) { + assertThat(count, equalTo(expectedRecords)); + } + } + + @Override + public String toString() { + return "JSON"; + } +} diff --git a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/NdjsonOutputScenario.java b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/NdjsonOutputScenario.java index 7604945c9e..eb1bf22440 100644 --- a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/NdjsonOutputScenario.java +++ b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/NdjsonOutputScenario.java @@ -56,6 +56,7 @@ public void validate(int expectedRecords, final List> sample assertThat(sampledData, equalTo(sampleEventData.size())); } + @Override public void validateDynamicPartition(int expectedRecords, int partitionNumber, final File actualContentFile, final CompressionScenario compressionScenario) throws IOException { final InputStream inputStream = new BufferedInputStream(new FileInputStream(actualContentFile), 64 * 1024); diff --git a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/OutputScenario.java b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/OutputScenario.java index e60fce299d..8a7de5e6d9 100644 --- a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/OutputScenario.java +++ b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/OutputScenario.java @@ -50,4 +50,6 @@ default Set getIncompatibleBufferTypes() { * @throws IOException Some IOException */ void validate(int expectedRecords, List> sampleEventData, File actualContentFile, CompressionScenario compressionScenario) throws IOException; + + void validateDynamicPartition(int expectedRecords, int partitionNumber, File actualContentFile, CompressionScenario compressionScenario) throws IOException; } diff --git a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/ParquetOutputScenario.java b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/ParquetOutputScenario.java index e01c61fe09..8c895d530a 100644 --- a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/ParquetOutputScenario.java +++ b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/ParquetOutputScenario.java @@ -101,6 +101,11 @@ public void validate(int expectedRecords, final List> sample assertThat("Not all the sample data was validated.", validatedRecords, equalTo(sampleEventData.size())); } + @Override + public void validateDynamicPartition(int expectedRecords, int partitionNumber, File actualContentFile, CompressionScenario compressionScenario) throws IOException { + throw new UnsupportedOperationException(); + } + private static void validateParquetStructure(int expectedRecords, final List> allEventData, final InputFile inputFile, CompressionCodecName expectedCompressionCodec) throws IOException { // This test assumes that the data all has the same keys. final Map sampleEvent = allEventData.iterator().next(); diff --git a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkIT.java b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkIT.java index f61d53c4a0..7d078dbd16 100644 --- a/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkIT.java +++ b/data-prepper-plugins/s3-sink/src/integrationTest/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkIT.java @@ -249,11 +249,11 @@ void test(final OutputScenario outputScenario, outputScenario.validate(expectedTotalSize, sampleEventData, actualContentFile, compressionScenario); } - @Test - void testWithDynamicGroups() throws IOException { + @ParameterizedTest + @ArgumentsSource(OutputScenarioArguments.class) + void testWithDynamicGroups(final OutputScenario outputScenario) throws IOException { final BufferScenario bufferScenario = new InMemoryBufferScenario(); final CompressionScenario compressionScenario = new NoneCompressionScenario(); - final NdjsonOutputScenario outputScenario = new NdjsonOutputScenario(); final SizeCombination sizeCombination = SizeCombination.MEDIUM_SMALLER; BufferTypeOptions bufferTypeOptions = bufferScenario.getBufferType(); @@ -275,7 +275,7 @@ void testWithDynamicGroups() throws IOException { when(expressionEvaluator.extractDynamicExpressionsFromFormatExpression(objectKeyOptions.getNamePattern())) .thenReturn(Collections.emptyList()); - when(pluginFactory.loadPlugin(eq(OutputCodec.class), any())).thenReturn(outputScenario.getCodec()); + when(pluginFactory.loadPlugin(eq(OutputCodec.class), any())).thenAnswer(invocation -> outputScenario.getCodec()); when(s3SinkConfig.getBufferType()).thenReturn(bufferTypeOptions); when(s3SinkConfig.getCompression()).thenReturn(compressionScenario.getCompressionOption()); int expectedTotalSize = sizeCombination.getTotalSize(); @@ -361,7 +361,7 @@ void testWithDynamicGroupsAndAggregateThreshold() throws IOException { when(expressionEvaluator.extractDynamicExpressionsFromFormatExpression(objectKeyOptions.getNamePattern())) .thenReturn(Collections.emptyList()); - when(pluginFactory.loadPlugin(eq(OutputCodec.class), any())).thenReturn(outputScenario.getCodec()); + when(pluginFactory.loadPlugin(eq(OutputCodec.class), any())).thenAnswer(invocation -> outputScenario.getCodec()); when(s3SinkConfig.getBufferType()).thenReturn(bufferTypeOptions); when(s3SinkConfig.getCompression()).thenReturn(compressionScenario.getCompressionOption()); int expectedTotalSize = sizeCombination.getTotalSize(); @@ -542,6 +542,16 @@ public Stream provideArguments(final ExtensionContext conte } } + static class OutputScenarioArguments implements ArgumentsProvider { + + @Override + public Stream provideArguments(ExtensionContext extensionContext) throws Exception { + return Stream.of( + arguments(new NdjsonOutputScenario()), + arguments(new JsonOutputScenario())); + } + } + private static Stream generateCombinedArguments( final List bufferScenarios, final List outputScenarios, diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactory.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactory.java index 910f3966cc..f647057af4 100644 --- a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactory.java +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactory.java @@ -8,10 +8,14 @@ import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; import org.opensearch.dataprepper.plugins.sink.s3.configuration.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.sink.s3.configuration.ClientOptions; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.retry.RetryPolicy; +import software.amazon.awssdk.http.async.SdkAsyncHttpClient; +import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; import software.amazon.awssdk.services.s3.S3AsyncClient; +import software.amazon.awssdk.services.s3.S3AsyncClientBuilder; import software.amazon.awssdk.services.s3.S3Client; public final class ClientFactory { @@ -31,10 +35,21 @@ static S3AsyncClient createS3AsyncClient(final S3SinkConfig s3SinkConfig, final final AwsCredentialsOptions awsCredentialsOptions = convertToCredentialsOptions(s3SinkConfig.getAwsAuthenticationOptions()); final AwsCredentialsProvider awsCredentialsProvider = awsCredentialsSupplier.getProvider(awsCredentialsOptions); - return S3AsyncClient.builder() + S3AsyncClientBuilder s3AsyncClientBuilder = S3AsyncClient.builder() .region(s3SinkConfig.getAwsAuthenticationOptions().getAwsRegion()) .credentialsProvider(awsCredentialsProvider) - .overrideConfiguration(createOverrideConfiguration(s3SinkConfig)).build(); + .overrideConfiguration(createOverrideConfiguration(s3SinkConfig)); + + if (s3SinkConfig.getClientOptions() != null) { + final ClientOptions clientOptions = s3SinkConfig.getClientOptions(); + SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder() + .connectionAcquisitionTimeout(clientOptions.getAcquireTimeout()) + .maxConcurrency(clientOptions.getMaxConnections()) + .build(); + s3AsyncClientBuilder.httpClient(httpClient); + } + + return s3AsyncClientBuilder.build(); } private static ClientOverrideConfiguration createOverrideConfiguration(final S3SinkConfig s3SinkConfig) { diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadata.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadata.java new file mode 100644 index 0000000000..55785b6ee7 --- /dev/null +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadata.java @@ -0,0 +1,43 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.sink.s3; + +import java.util.HashMap; +import java.util.Map; + +public class ObjectMetadata { + private Map metadata; + private ObjectMetadataConfig objectMetadataConfig; + private PredefinedObjectMetadata predefinedObjectMetadata; + + public ObjectMetadata(final Object objectMetadataConfig) { + if (objectMetadataConfig instanceof ObjectMetadataConfig) { + this.objectMetadataConfig = (ObjectMetadataConfig)objectMetadataConfig; + } else { // instanceof PredefinedObjectMetadata + this.predefinedObjectMetadata = (PredefinedObjectMetadata)objectMetadataConfig; + } + this.metadata = new HashMap(); + } + + public void setEventCount(final int eventCount) { + String numberOfEventsKey = null; + if (objectMetadataConfig != null) { + numberOfEventsKey = objectMetadataConfig.getNumberOfEventsKey(); + } else if (predefinedObjectMetadata != null) { + numberOfEventsKey = predefinedObjectMetadata.getNumberOfObjects(); + } + if (numberOfEventsKey != null) { + metadata.put(numberOfEventsKey, Integer.toString(eventCount)); + } + } + + public Map get() { + return metadata; + } + +} + + diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataConfig.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataConfig.java new file mode 100644 index 0000000000..bfb6d6004a --- /dev/null +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataConfig.java @@ -0,0 +1,18 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.sink.s3; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ObjectMetadataConfig { + @JsonProperty("number_of_events_key") + private String numberOfEventsKey; + + public String getNumberOfEventsKey() { + return numberOfEventsKey; + } + +} diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfig.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfig.java index 71e523e5f6..f5e36ea643 100644 --- a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfig.java +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfig.java @@ -16,6 +16,7 @@ import org.opensearch.dataprepper.plugins.sink.s3.compression.CompressionOption; import org.opensearch.dataprepper.plugins.sink.s3.configuration.AggregateThresholdOptions; import org.opensearch.dataprepper.plugins.sink.s3.configuration.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.sink.s3.configuration.ClientOptions; import org.opensearch.dataprepper.plugins.sink.s3.configuration.ObjectKeyOptions; import org.opensearch.dataprepper.plugins.sink.s3.configuration.ThresholdOptions; @@ -45,6 +46,15 @@ public class S3SinkConfig { @JsonProperty("predefined_object_metadata") private PredefinedObjectMetadata predefinedObjectMetadata; + @JsonProperty("object_metadata") + private ObjectMetadataConfig objectMetadataConfig; + + @AssertTrue(message = "Only one of object_metadata and predefined_object_metadata can be used.") + boolean isValidMetadataConfig() { + // One of them or both should be null + return (objectMetadataConfig == null || predefinedObjectMetadata == null); + } + @AssertTrue(message = "You may not use both bucket and bucket_selector together in one S3 sink.") private boolean isValidBucketConfig() { return (bucketName != null && bucketSelector == null) || @@ -95,6 +105,9 @@ private boolean isValidBucketConfig() { @AwsAccountId private String defaultBucketOwner; + @JsonProperty("client") + private ClientOptions clientOptions; + /** * Aws Authentication configuration Options. * @return aws authentication options. @@ -138,8 +151,8 @@ public ObjectKeyOptions getObjectKeyOptions() { return objectKeyOptions; } - public PredefinedObjectMetadata getPredefinedObjectMetadata() { - return predefinedObjectMetadata; + public Object getObjectMetadataConfig() { + return objectMetadataConfig != null ? objectMetadataConfig : predefinedObjectMetadata; } /** @@ -195,4 +208,8 @@ public Map getBucketOwners() { public String getDefaultBucketOwner() { return defaultBucketOwner; } + + public ClientOptions getClientOptions() { + return clientOptions; + } } diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/configuration/ClientOptions.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/configuration/ClientOptions.java new file mode 100644 index 0000000000..a5e83948a5 --- /dev/null +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/configuration/ClientOptions.java @@ -0,0 +1,37 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.sink.s3.configuration; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import org.hibernate.validator.constraints.time.DurationMax; +import org.hibernate.validator.constraints.time.DurationMin; + +import java.time.Duration; + +public class ClientOptions { + private static final int DEFAULT_MAX_CONNECTIONS = 50; + private static final Duration DEFAULT_ACQUIRE_TIMEOUT = Duration.ofSeconds(10); + + @JsonProperty("max_connections") + @Min(1) + @Max(5000) + private int maxConnections = DEFAULT_MAX_CONNECTIONS; + + @JsonProperty("acquire_timeout") + @DurationMin(seconds = 1) + @DurationMax(seconds = 3600) + private Duration acquireTimeout = DEFAULT_ACQUIRE_TIMEOUT; + + public int getMaxConnections() { + return maxConnections; + } + + public Duration getAcquireTimeout() { + return acquireTimeout; + } +} diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/configuration/ThresholdOptions.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/configuration/ThresholdOptions.java index d6dbf6877f..0ba43c2c02 100644 --- a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/configuration/ThresholdOptions.java +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/configuration/ThresholdOptions.java @@ -28,7 +28,7 @@ public class ThresholdOptions { private int eventCount; @JsonProperty("maximum_size") - private String maximumSize = DEFAULT_BYTE_CAPACITY; + private ByteCount maximumSize = ByteCount.parse(DEFAULT_BYTE_CAPACITY); @JsonProperty("event_collect_timeout") @DurationMin(seconds = 1) @@ -49,7 +49,7 @@ public Duration getEventCollectTimeOut() { * @return maximum byte count. */ public ByteCount getMaximumSize() { - return ByteCount.parse(maximumSize); + return maximumSize; } /** diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifier.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifier.java index 52fa2578fd..96c767b9ea 100644 --- a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifier.java +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifier.java @@ -5,7 +5,7 @@ package org.opensearch.dataprepper.plugins.sink.s3.grouping; -import org.opensearch.dataprepper.plugins.sink.s3.PredefinedObjectMetadata; +import org.opensearch.dataprepper.plugins.sink.s3.ObjectMetadata; import java.util.Map; import java.util.Objects; @@ -13,16 +13,16 @@ class S3GroupIdentifier { private final Map groupIdentifierHash; private final String groupIdentifierFullObjectKey; - private final PredefinedObjectMetadata predefinedObjectMetadata; + private final Object objectMetadataConfig; private final String fullBucketName; public S3GroupIdentifier(final Map groupIdentifierHash, final String groupIdentifierFullObjectKey, - final PredefinedObjectMetadata predefineObjectMetadata, + final Object objectMetadataConfig, final String fullBucketName) { this.groupIdentifierHash = groupIdentifierHash; this.groupIdentifierFullObjectKey = groupIdentifierFullObjectKey; - this.predefinedObjectMetadata = predefineObjectMetadata; + this.objectMetadataConfig = objectMetadataConfig; this.fullBucketName = fullBucketName; } @@ -43,6 +43,13 @@ public int hashCode() { public Map getGroupIdentifierHash() { return groupIdentifierHash; } - public Map getMetadata(int eventCount) { return predefinedObjectMetadata != null ? Map.of(predefinedObjectMetadata.getNumberOfObjects(), Integer.toString(eventCount)) : null; } + public Map getMetadata(int eventCount) { + if (objectMetadataConfig == null) { + return null; + } + ObjectMetadata objectMetadata = new ObjectMetadata(objectMetadataConfig); + objectMetadata.setEventCount(eventCount); + return objectMetadata.get(); + } public String getFullBucketName() { return fullBucketName; } } diff --git a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifierFactory.java b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifierFactory.java index 89315d95a1..4570898c7d 100644 --- a/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifierFactory.java +++ b/data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/grouping/S3GroupIdentifierFactory.java @@ -70,6 +70,6 @@ public S3GroupIdentifier getS3GroupIdentifierForEvent(final Event event) { } - return new S3GroupIdentifier(groupIdentificationHash, fullObjectKey, s3SinkConfig.getPredefinedObjectMetadata(), fullBucketName); + return new S3GroupIdentifier(groupIdentificationHash, fullObjectKey, s3SinkConfig.getObjectMetadataConfig(), fullBucketName); } } diff --git a/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactoryTest.java b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactoryTest.java index bf70dde593..947bc728e9 100644 --- a/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactoryTest.java +++ b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactoryTest.java @@ -17,12 +17,18 @@ import org.opensearch.dataprepper.aws.api.AwsCredentialsOptions; import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier; import org.opensearch.dataprepper.plugins.sink.s3.configuration.AwsAuthenticationOptions; +import org.opensearch.dataprepper.plugins.sink.s3.configuration.ClientOptions; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.async.SdkAsyncHttpClient; import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.s3.S3AsyncClient; +import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; +import software.amazon.awssdk.services.s3.S3AsyncClientBuilder; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.S3ClientBuilder; +import java.time.Duration; import java.util.Map; import java.util.UUID; @@ -30,6 +36,7 @@ import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.verify; @@ -44,6 +51,8 @@ class ClientFactoryTest { @Mock private AwsAuthenticationOptions awsAuthenticationOptions; + @Mock + private ClientOptions clientOptions; @BeforeEach void setUp() { @@ -51,7 +60,7 @@ void setUp() { } @Test - void createS3Client_with_real_S3Client() { + void createS3AsyncClient_with_real_S3AsyncClient() { when(awsAuthenticationOptions.getAwsRegion()).thenReturn(Region.US_EAST_1); final S3Client s3Client = ClientFactory.createS3Client(s3SinkConfig, awsCredentialsSupplier); @@ -99,4 +108,66 @@ void createS3Client_provides_correct_inputs(final String regionString) { assertThat(actualCredentialsOptions.getStsExternalId(), equalTo(externalId)); assertThat(actualCredentialsOptions.getStsHeaderOverrides(), equalTo(stsHeaderOverrides)); } + + @Test + void createS3AsyncClient_with_client_options_returns_expected_client() { + final Region region = Region.of("us-east-1"); + final String stsRoleArn = UUID.randomUUID().toString(); + final String externalId = UUID.randomUUID().toString(); + final Map stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + when(awsAuthenticationOptions.getAwsRegion()).thenReturn(region); + when(awsAuthenticationOptions.getAwsStsRoleArn()).thenReturn(stsRoleArn); + when(awsAuthenticationOptions.getAwsStsExternalId()).thenReturn(externalId); + when(awsAuthenticationOptions.getAwsStsHeaderOverrides()).thenReturn(stsHeaderOverrides); + + final AwsCredentialsProvider expectedCredentialsProvider = mock(AwsCredentialsProvider.class); + when(awsCredentialsSupplier.getProvider(any())).thenReturn(expectedCredentialsProvider); + + final S3AsyncClientBuilder s3AsyncClientBuilder = mock(S3AsyncClientBuilder.class); + when(s3AsyncClientBuilder.region(region)).thenReturn(s3AsyncClientBuilder); + when(s3AsyncClientBuilder.credentialsProvider(any())).thenReturn(s3AsyncClientBuilder); + when(s3AsyncClientBuilder.overrideConfiguration(any(ClientOverrideConfiguration.class))).thenReturn(s3AsyncClientBuilder); + + when(s3SinkConfig.getClientOptions()).thenReturn(clientOptions); + + final int maxConnections = 100; + final Duration acquireTimeout = Duration.ofSeconds(30); + when(clientOptions.getMaxConnections()).thenReturn(maxConnections); + when(clientOptions.getAcquireTimeout()).thenReturn(acquireTimeout); + + final NettyNioAsyncHttpClient.Builder httpClientBuilder = mock(NettyNioAsyncHttpClient.Builder.class); + final SdkAsyncHttpClient httpClient = mock(SdkAsyncHttpClient.class); + when(httpClientBuilder.connectionAcquisitionTimeout(any(Duration.class))).thenReturn(httpClientBuilder); + when(httpClientBuilder.maxConcurrency(anyInt())).thenReturn(httpClientBuilder); + when(httpClientBuilder.build()).thenReturn(httpClient); + + try(final MockedStatic s3AsyncClientMockedStatic = mockStatic(S3AsyncClient.class); + final MockedStatic httpClientMockedStatic = mockStatic(NettyNioAsyncHttpClient.class)) { + s3AsyncClientMockedStatic.when(S3AsyncClient::builder) + .thenReturn(s3AsyncClientBuilder); + httpClientMockedStatic.when(NettyNioAsyncHttpClient::builder) + .thenReturn(httpClientBuilder); + ClientFactory.createS3AsyncClient(s3SinkConfig, awsCredentialsSupplier); + } + + final ArgumentCaptor credentialsProviderArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsProvider.class); + verify(s3AsyncClientBuilder).credentialsProvider(credentialsProviderArgumentCaptor.capture()); + + final AwsCredentialsProvider actualCredentialsProvider = credentialsProviderArgumentCaptor.getValue(); + + assertThat(actualCredentialsProvider, equalTo(expectedCredentialsProvider)); + + final ArgumentCaptor optionsArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsOptions.class); + verify(awsCredentialsSupplier).getProvider(optionsArgumentCaptor.capture()); + + final AwsCredentialsOptions actualCredentialsOptions = optionsArgumentCaptor.getValue(); + assertThat(actualCredentialsOptions.getRegion(), equalTo(region)); + assertThat(actualCredentialsOptions.getStsRoleArn(), equalTo(stsRoleArn)); + assertThat(actualCredentialsOptions.getStsExternalId(), equalTo(externalId)); + assertThat(actualCredentialsOptions.getStsHeaderOverrides(), equalTo(stsHeaderOverrides)); + + verify(httpClientBuilder).connectionAcquisitionTimeout(acquireTimeout); + verify(httpClientBuilder).maxConcurrency(maxConnections); + verify(s3AsyncClientBuilder).httpClient(httpClient); + } } \ No newline at end of file diff --git a/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataConfigTest.java b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataConfigTest.java new file mode 100644 index 0000000000..e745944d6c --- /dev/null +++ b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataConfigTest.java @@ -0,0 +1,30 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.sink.s3; + +import org.junit.jupiter.api.Test; + +import org.opensearch.dataprepper.test.helper.ReflectivelySetField; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import java.util.UUID; + +public class ObjectMetadataConfigTest { + @Test + void test_default() { + assertThat(new ObjectMetadataConfig().getNumberOfEventsKey(), equalTo(null)); + } + + @Test + void test_number_of_events_key() throws Exception { + final String numberOfEventsKey = UUID.randomUUID().toString(); + final ObjectMetadataConfig objectUnderTest = new ObjectMetadataConfig(); + ReflectivelySetField.setField(ObjectMetadataConfig.class, objectUnderTest, "numberOfEventsKey", numberOfEventsKey); + assertThat(objectUnderTest.getNumberOfEventsKey(), equalTo(numberOfEventsKey)); + } +} + diff --git a/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataTest.java b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataTest.java new file mode 100644 index 0000000000..eebb1be325 --- /dev/null +++ b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ObjectMetadataTest.java @@ -0,0 +1,58 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.plugins.sink.s3; + +import static org.hamcrest.CoreMatchers.equalTo; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import static org.hamcrest.MatcherAssert.assertThat; +import org.mockito.Mock; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Random; +import java.util.UUID; + +public class ObjectMetadataTest { + private ObjectMetadata objectMetadata; + @Mock + private ObjectMetadataConfig objectMetadataConfig; + @Mock + private PredefinedObjectMetadata predefinedObjectMetadata; + private String numberOfEventsKey; + + private ObjectMetadata createObjectUnderTest(Object metadataConfig) { + return new ObjectMetadata(metadataConfig); + } + + @BeforeEach + public void setup() { + objectMetadataConfig = mock(ObjectMetadataConfig.class); + predefinedObjectMetadata = mock(PredefinedObjectMetadata.class); + numberOfEventsKey = UUID.randomUUID().toString(); + when(objectMetadataConfig.getNumberOfEventsKey()).thenReturn(numberOfEventsKey); + when(predefinedObjectMetadata.getNumberOfObjects()).thenReturn(numberOfEventsKey); + } + + @Test + public void test_setEventCount_with_PredefinedObjectMetadata() { + objectMetadata = createObjectUnderTest(predefinedObjectMetadata); + Random random = new Random(); + Integer numEvents = Math.abs(random.nextInt()); + objectMetadata.setEventCount(numEvents); + assertThat(objectMetadata.get().get(numberOfEventsKey), equalTo(Integer.toString(numEvents))); + } + + @Test + void test_setEventCount_with_ObjectMetadata() { + objectMetadata = createObjectUnderTest(objectMetadataConfig); + Random random = new Random(); + Integer numEvents = Math.abs(random.nextInt()); + objectMetadata.setEventCount(numEvents); + assertThat(objectMetadata.get().get(numberOfEventsKey), equalTo(Integer.toString(numEvents))); + } + +} diff --git a/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfigTest.java b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfigTest.java index d1660ebc63..f6cab20463 100644 --- a/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfigTest.java +++ b/data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/S3SinkConfigTest.java @@ -55,6 +55,39 @@ void get_bucket_name_with_s3_prefix_test() throws NoSuchFieldException, IllegalA assertThat(objectUnderTest.getBucketName(), equalTo(bucketName)); } + @Test + void test_default_metadata_config() throws NoSuchFieldException, IllegalAccessException { + final String bucketName = UUID.randomUUID().toString(); + final String bucketNameWithPrefix = S3_PREFIX + bucketName; + final S3SinkConfig objectUnderTest = new S3SinkConfig(); + assertThat(objectUnderTest.isValidMetadataConfig(), equalTo(true)); + assertThat(objectUnderTest.getObjectMetadataConfig(), equalTo(null)); + } + + @Test + void test_object_metadata_config() throws NoSuchFieldException, IllegalAccessException { + final String bucketName = UUID.randomUUID().toString(); + final String bucketNameWithPrefix = S3_PREFIX + bucketName; + final S3SinkConfig objectUnderTest = new S3SinkConfig(); + + ObjectMetadataConfig objectMetadataConfig = new ObjectMetadataConfig(); + ReflectivelySetField.setField(S3SinkConfig.class, objectUnderTest, "objectMetadataConfig", objectMetadataConfig); + assertThat(objectUnderTest.isValidMetadataConfig(), equalTo(true)); + assertThat(objectUnderTest.getObjectMetadataConfig(), equalTo(objectMetadataConfig)); + } + + @Test + void test_predefined_metadata_config() throws NoSuchFieldException, IllegalAccessException { + final String bucketName = UUID.randomUUID().toString(); + final String bucketNameWithPrefix = S3_PREFIX + bucketName; + final S3SinkConfig objectUnderTest = new S3SinkConfig(); + + PredefinedObjectMetadata objectMetadataConfig = new PredefinedObjectMetadata(); + ReflectivelySetField.setField(S3SinkConfig.class, objectUnderTest, "predefinedObjectMetadata", objectMetadataConfig); + assertThat(objectUnderTest.isValidMetadataConfig(), equalTo(true)); + assertThat(objectUnderTest.getObjectMetadataConfig(), equalTo(objectMetadataConfig)); + } + @Test void get_object_key_test() { assertThat("Object key is not an instance of ObjectKeyOptions", @@ -76,4 +109,9 @@ void get_AWS_Auth_options_in_sinkconfig_exception() { void get_json_codec_test() { assertNull(new S3SinkConfig().getCodec()); } -} \ No newline at end of file + + @Test + void get_client_option_test() { + assertNull(new S3SinkConfig().getClientOptions()); + } +} diff --git a/data-prepper-plugins/s3-source/build.gradle b/data-prepper-plugins/s3-source/build.gradle index 06818d8eaa..1a3f213237 100644 --- a/data-prepper-plugins/s3-source/build.gradle +++ b/data-prepper-plugins/s3-source/build.gradle @@ -26,7 +26,7 @@ dependencies { implementation 'org.hibernate.validator:hibernate-validator:8.0.1.Final' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' - implementation 'org.xerial.snappy:snappy-java:1.1.10.5' + implementation 'org.xerial.snappy:snappy-java:1.1.10.7' implementation libs.parquet.common implementation 'dev.failsafe:failsafe:3.3.2' implementation 'org.apache.httpcomponents:httpcore:4.4.16' @@ -42,6 +42,7 @@ dependencies { testImplementation project(':data-prepper-plugins:avro-codecs') testImplementation project(':data-prepper-plugins:in-memory-source-coordination-store') testImplementation project(':data-prepper-core') + testImplementation project(':data-prepper-event') testImplementation project(':data-prepper-plugins:parquet-codecs') testImplementation project(':data-prepper-test-event') testImplementation libs.avro.core diff --git a/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/JsonRecordsGenerator.java b/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/JsonRecordsGenerator.java index 1031e7de56..29bb75c20b 100644 --- a/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/JsonRecordsGenerator.java +++ b/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/JsonRecordsGenerator.java @@ -11,6 +11,7 @@ import org.opensearch.dataprepper.model.codec.InputCodec; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.plugins.codec.json.JsonInputCodec; +import org.opensearch.dataprepper.plugins.codec.json.JsonInputCodecConfig; import java.io.File; import java.io.IOException; @@ -50,7 +51,7 @@ public void write(final File file, int numberOfRecords) { @Override public InputCodec getCodec() { - return new JsonInputCodec(); + return new JsonInputCodec(new JsonInputCodecConfig()); } @Override diff --git a/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerIT.java b/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerIT.java index cebd91daea..af444f962f 100644 --- a/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerIT.java +++ b/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerIT.java @@ -22,7 +22,7 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; import org.opensearch.dataprepper.model.buffer.Buffer; @@ -32,7 +32,7 @@ import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.source.SourceCoordinationStore; import org.opensearch.dataprepper.model.source.coordinator.SourceCoordinator; -import org.opensearch.dataprepper.parser.model.SourceCoordinationConfig; +import org.opensearch.dataprepper.core.parser.model.SourceCoordinationConfig; import org.opensearch.dataprepper.plugins.codec.CompressionOption; import org.opensearch.dataprepper.plugins.source.s3.configuration.S3ScanBucketOption; import org.opensearch.dataprepper.plugins.source.s3.configuration.S3ScanScanOptions; @@ -42,7 +42,7 @@ import org.opensearch.dataprepper.plugins.source.s3.configuration.S3SelectSerializationFormatOption; import org.opensearch.dataprepper.plugins.source.s3.ownership.BucketOwnerProvider; import org.opensearch.dataprepper.plugins.sourcecoordinator.inmemory.InMemorySourceCoordinationStore; -import org.opensearch.dataprepper.sourcecoordination.LeaseBasedSourceCoordinator; +import org.opensearch.dataprepper.core.sourcecoordination.LeaseBasedSourceCoordinator; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3AsyncClient; import software.amazon.awssdk.services.s3.S3Client; diff --git a/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/SqsWorkerIT.java b/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/SqsWorkerIT.java index c6c94c27c6..21475930ec 100644 --- a/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/SqsWorkerIT.java +++ b/data-prepper-plugins/s3-source/src/integrationTest/java/org/opensearch/dataprepper/plugins/source/s3/SqsWorkerIT.java @@ -18,7 +18,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.opensearch.dataprepper.acknowledgements.DefaultAcknowledgementSetManager; +import org.opensearch.dataprepper.core.acknowledgements.DefaultAcknowledgementSetManager; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSet; import org.opensearch.dataprepper.model.acknowledgements.AcknowledgementSetManager; diff --git a/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/ScanObjectWorker.java b/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/ScanObjectWorker.java index 00172701cc..4ecd17c584 100644 --- a/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/ScanObjectWorker.java +++ b/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/ScanObjectWorker.java @@ -56,8 +56,6 @@ public class ScanObjectWorker implements Runnable { static final Duration NO_OBJECTS_FOUND_BEFORE_PARTITION_DELETION_DURATION = Duration.ofHours(1); private static final int RETRY_BACKOFF_ON_EXCEPTION_MILLIS = 5_000; - - static final Duration ACKNOWLEDGEMENT_SET_TIMEOUT = Duration.ofHours(2); static final String ACKNOWLEDGEMENT_SET_CALLBACK_METRIC_NAME = "acknowledgementSetCallbackCounter"; static final String NO_OBJECTS_FOUND_FOR_FOLDER_PARTITION = "folderPartitionNoObjectsFound"; @@ -99,6 +97,8 @@ public class ScanObjectWorker implements Runnable { private final Map acknowledgmentsRemainingForPartitions; + private final Duration acknowledgmentSetTimeout; + public ScanObjectWorker(final S3Client s3Client, final List scanOptionsBuilderList, final S3ObjectHandler s3ObjectHandler, @@ -127,6 +127,7 @@ public ScanObjectWorker(final S3Client s3Client, this.sourceCoordinator.initialize(); this.partitionKeys = new ArrayList<>(); this.folderPartitioningOptions = s3SourceConfig.getS3ScanScanOptions().getPartitioningOptions(); + this.acknowledgmentSetTimeout = s3SourceConfig.getS3ScanScanOptions().getAcknowledgmentTimeout(); this.partitionCreationSupplier = new S3ScanPartitionCreationSupplier(s3Client, bucketOwnerProvider, scanOptionsBuilderList, s3ScanSchedulingOptions, s3SourceConfig.getS3ScanScanOptions().getPartitioningOptions()); this.acknowledgmentsRemainingForPartitions = new ConcurrentHashMap<>(); @@ -214,18 +215,9 @@ private void startProcessingObject(final long waitTimeMillis) { sourceCoordinator.giveUpPartition(objectToProcess.get().getPartitionKey()); } partitionKeys.remove(objectToProcess.get().getPartitionKey()); - }, ACKNOWLEDGEMENT_SET_TIMEOUT); - - acknowledgementSet.addProgressCheck( - (ratio) -> { - try { - sourceCoordinator.renewPartitionOwnership(objectToProcess.get().getPartitionKey()); - } catch (final PartitionUpdateException | PartitionNotOwnedException | PartitionNotFoundException e) { - LOG.debug("Failed to update partition ownership for {} in the acknowledgment progress check", objectToProcess.get().getPartitionKey()); - partitionOwnershipUpdateFailures.increment(); - } - }, - CHECKPOINT_OWNERSHIP_INTERVAL); + }, acknowledgmentSetTimeout); + + addProgressCheck(acknowledgementSet, objectToProcess.get()); } @@ -235,7 +227,7 @@ private void startProcessingObject(final long waitTimeMillis) { if (endToEndAcknowledgementsEnabled) { deleteObjectRequest.ifPresent(deleteRequest -> objectsToDeleteForAcknowledgmentSets.put(objectToProcess.get().getPartitionKey(), Set.of(deleteRequest))); try { - sourceCoordinator.updatePartitionForAcknowledgmentWait(objectToProcess.get().getPartitionKey(), ACKNOWLEDGEMENT_SET_TIMEOUT); + sourceCoordinator.updatePartitionForAcknowledgmentWait(objectToProcess.get().getPartitionKey(), acknowledgmentSetTimeout); } catch (final PartitionUpdateException e) { LOG.debug("Failed to update the partition for the acknowledgment wait."); } @@ -360,6 +352,7 @@ private void processObjectsForFolderPartition(final List obje activeAcknowledgmentSetId = acknowledgmentSetId; acknowledgementSet = createAcknowledgmentSetForFolderPartition(folderPartition, acknowledgmentSetId); + addProgressCheck(acknowledgementSet, folderPartition); objectsToDeleteForAcknowledgmentSets.put(acknowledgmentSetId, new HashSet<>()); @@ -383,7 +376,7 @@ private void processObjectsForFolderPartition(final List obje objectIndex++; } - sourceCoordinator.updatePartitionForAcknowledgmentWait(folderPartition.getPartitionKey(), ACKNOWLEDGEMENT_SET_TIMEOUT); + sourceCoordinator.updatePartitionForAcknowledgmentWait(folderPartition.getPartitionKey(), acknowledgmentSetTimeout); if (acknowledgementSet != null) { acknowledgementSet.complete(); @@ -410,6 +403,19 @@ private AcknowledgementSet createAcknowledgmentSetForFolderPartition(final Sourc LOG.info("Received all acknowledgments for folder partition {}, giving up this partition", folderPartition.getPartitionKey()); sourceCoordinator.giveUpPartition(folderPartition.getPartitionKey(), Instant.now()); } - }, ACKNOWLEDGEMENT_SET_TIMEOUT); + }, acknowledgmentSetTimeout); + } + + private void addProgressCheck(final AcknowledgementSet acknowledgementSet, final SourcePartition objectToProcess) { + acknowledgementSet.addProgressCheck( + (ratio) -> { + try { + sourceCoordinator.renewPartitionOwnership(objectToProcess.getPartitionKey()); + } catch (final PartitionUpdateException | PartitionNotOwnedException | PartitionNotFoundException e) { + LOG.debug("Failed to update partition ownership for {} in the acknowledgment progress check", objectToProcess.getPartitionKey()); + partitionOwnershipUpdateFailures.increment(); + } + }, + CHECKPOINT_OWNERSHIP_INTERVAL); } } diff --git a/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/configuration/S3ScanScanOptions.java b/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/configuration/S3ScanScanOptions.java index c0a5d50711..e43e798ea9 100644 --- a/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/configuration/S3ScanScanOptions.java +++ b/data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/configuration/S3ScanScanOptions.java @@ -22,6 +22,9 @@ */ public class S3ScanScanOptions { + @JsonProperty("acknowledgment_timeout") + private Duration acknowledgmentTimeout = Duration.ofHours(2); + @JsonProperty("folder_partitions") @Valid private FolderPartitioningOptions folderPartitioningOptions; @@ -84,4 +87,6 @@ public S3ScanSchedulingOptions getSchedulingOptions() { } public FolderPartitioningOptions getPartitioningOptions() { return folderPartitioningOptions; } + + public Duration getAcknowledgmentTimeout() { return acknowledgmentTimeout; } } diff --git a/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ObjectWorkerTest.java b/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ObjectWorkerTest.java index eadc9a7b8b..0b9fcfdaee 100644 --- a/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ObjectWorkerTest.java +++ b/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ObjectWorkerTest.java @@ -140,7 +140,7 @@ void setUp() throws Exception { lenient().doAnswer(a -> { numEventsAdded++; return null; - }).when(acknowledgementSet).add(any()); + }).when(acknowledgementSet).add(any(Event.class)); bucketName = UUID.randomUUID().toString(); key = UUID.randomUUID().toString(); when(s3ObjectReference.getBucketName()).thenReturn(bucketName); @@ -196,6 +196,8 @@ void parseS3Object_calls_getObject_with_correct_GetObjectRequest_with_Acknowledg numEventsAdded = 0; doAnswer(a -> { Record record = mock(Record.class); + Event event = mock(Event.class); + when(record.getData()).thenReturn(event); Consumer c = (Consumer)a.getArgument(2); c.accept(record); return null; diff --git a/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerTest.java b/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerTest.java index 3e71510bf4..ddfa74023f 100644 --- a/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerTest.java +++ b/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3ScanObjectWorkerTest.java @@ -69,7 +69,6 @@ import static org.mockito.Mockito.when; import static org.opensearch.dataprepper.model.source.s3.S3ScanEnvironmentVariables.STOP_S3_SCAN_PROCESSING_PROPERTY; import static org.opensearch.dataprepper.plugins.source.s3.ScanObjectWorker.ACKNOWLEDGEMENT_SET_CALLBACK_METRIC_NAME; -import static org.opensearch.dataprepper.plugins.source.s3.ScanObjectWorker.ACKNOWLEDGEMENT_SET_TIMEOUT; import static org.opensearch.dataprepper.plugins.source.s3.ScanObjectWorker.CHECKPOINT_OWNERSHIP_INTERVAL; import static org.opensearch.dataprepper.plugins.source.s3.ScanObjectWorker.NO_OBJECTS_FOUND_BEFORE_PARTITION_DELETION_DURATION; import static org.opensearch.dataprepper.plugins.source.s3.ScanObjectWorker.NO_OBJECTS_FOUND_FOR_FOLDER_PARTITION; @@ -125,10 +124,14 @@ class S3ScanObjectWorkerTest { private List scanOptionsList; + @Mock + private Duration acknowledgmentSetTimeout; + @BeforeEach void setup() { scanOptionsList = new ArrayList<>(); when(s3ScanScanOptions.getPartitioningOptions()).thenReturn(null); + when(s3ScanScanOptions.getAcknowledgmentTimeout()).thenReturn(acknowledgmentSetTimeout); } private ScanObjectWorker createObjectUnderTest() { @@ -232,7 +235,7 @@ void buildDeleteObjectRequest_should_be_invoked_after_processing_when_deleteS3Ob final InOrder inOrder = inOrder(sourceCoordinator, acknowledgementSet, s3ObjectDeleteWorker); inOrder.verify(s3ObjectDeleteWorker).buildDeleteObjectRequest(bucket, objectKey); - inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, ACKNOWLEDGEMENT_SET_TIMEOUT); + inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, acknowledgmentSetTimeout); inOrder.verify(acknowledgementSet).complete(); inOrder.verify(sourceCoordinator).renewPartitionOwnership(partitionKey); inOrder.verify(sourceCoordinator).completePartition(partitionKey, true); @@ -289,7 +292,7 @@ void acknowledgment_progress_check_increments_ownership_error_metric_when_partit final InOrder inOrder = inOrder(sourceCoordinator, acknowledgementSet, s3ObjectDeleteWorker); inOrder.verify(s3ObjectDeleteWorker).buildDeleteObjectRequest(bucket, objectKey); - inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, ACKNOWLEDGEMENT_SET_TIMEOUT); + inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, acknowledgmentSetTimeout); inOrder.verify(acknowledgementSet).complete(); inOrder.verify(sourceCoordinator).renewPartitionOwnership(partitionKey); inOrder.verify(sourceCoordinator).completePartition(partitionKey, true); @@ -514,6 +517,9 @@ void processing_with_folder_partition_processes_objects_in_folder_and_deletes_th .thenReturn(acknowledgementSet1) .thenReturn(acknowledgementSet2); + doNothing().when(acknowledgementSet1).addProgressCheck(any(Consumer.class), eq(CHECKPOINT_OWNERSHIP_INTERVAL)); + doNothing().when(acknowledgementSet2).addProgressCheck(any(Consumer.class), eq(CHECKPOINT_OWNERSHIP_INTERVAL)); + doNothing().when(s3ObjectDeleteWorker).deleteS3Object(any(DeleteObjectRequest.class)); doNothing().when(s3ObjectHandler).parseS3Object(any(S3ObjectReference.class), any(AcknowledgementSet.class), eq(sourceCoordinator), eq(partitionKey)); @@ -533,7 +539,7 @@ void processing_with_folder_partition_processes_objects_in_folder_and_deletes_th inOrder.verify(s3ObjectDeleteWorker).buildDeleteObjectRequest(bucket, firstObject.key()); inOrder.verify(acknowledgementSet1).complete(); inOrder.verify(s3ObjectDeleteWorker).buildDeleteObjectRequest(bucket, secondObject.key()); - inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, ACKNOWLEDGEMENT_SET_TIMEOUT); + inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, acknowledgmentSetTimeout); inOrder.verify(acknowledgementSet2).complete(); final Consumer firstAckCallback = ackCallbacks.get(0); @@ -589,6 +595,7 @@ void processing_with_folder_partition_processes_objects_in_folder_until_max_obje when(acknowledgementSetManager.create(any(Consumer.class), any(Duration.class))) .thenReturn(acknowledgementSet1); + doNothing().when(acknowledgementSet1).addProgressCheck(any(Consumer.class), eq(CHECKPOINT_OWNERSHIP_INTERVAL)); doNothing().when(s3ObjectDeleteWorker).deleteS3Object(any(DeleteObjectRequest.class)); doNothing().when(s3ObjectHandler).parseS3Object(any(S3ObjectReference.class), any(AcknowledgementSet.class), eq(sourceCoordinator), eq(partitionKey)); @@ -601,11 +608,18 @@ void processing_with_folder_partition_processes_objects_in_folder_until_max_obje final ArgumentCaptor consumerArgumentCaptor = ArgumentCaptor.forClass(Consumer.class); verify(acknowledgementSetManager, times(1)).create(consumerArgumentCaptor.capture(), any(Duration.class)); + final ArgumentCaptor progressCheckArgumentCaptor = ArgumentCaptor.forClass(Consumer.class); + verify(acknowledgementSet1).addProgressCheck(progressCheckArgumentCaptor.capture(), eq(CHECKPOINT_OWNERSHIP_INTERVAL)); + + final Consumer progressCheckConsumer = progressCheckArgumentCaptor.getValue(); + progressCheckConsumer.accept(mock(ProgressCheck.class)); + verify(sourceCoordinator).renewPartitionOwnership(partitionKey); + final InOrder inOrder = inOrder(sourceCoordinator, acknowledgementSet1, s3ObjectDeleteWorker); inOrder.verify(s3ObjectDeleteWorker).buildDeleteObjectRequest(bucket, firstObject.key()); - inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, ACKNOWLEDGEMENT_SET_TIMEOUT); + inOrder.verify(sourceCoordinator).updatePartitionForAcknowledgmentWait(partitionKey, acknowledgmentSetTimeout); inOrder.verify(acknowledgementSet1).complete(); final Consumer ackCallback = consumerArgumentCaptor.getValue(); diff --git a/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3SelectObjectWorkerTest.java b/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3SelectObjectWorkerTest.java index a911964ab6..603bc5d77e 100644 --- a/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3SelectObjectWorkerTest.java +++ b/data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/S3SelectObjectWorkerTest.java @@ -127,7 +127,7 @@ void setup() { lenient().doAnswer(a -> { numEventsAdded++; return null; - }).when(acknowledgementSet).add(any()); + }).when(acknowledgementSet).add(any(Event.class)); final String bucketName = UUID.randomUUID().toString(); final String objectKey = UUID.randomUUID().toString(); diff --git a/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfig.java b/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfig.java index faf98b2133..6d44f11b5c 100644 --- a/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfig.java +++ b/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfig.java @@ -9,21 +9,33 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import jakarta.validation.constraints.NotEmpty; @JsonPropertyOrder -@JsonClassDescription("The `service_map` processor uses OpenTelemetry data to create a distributed service map for " + +@JsonClassDescription("The service_map processor uses OpenTelemetry data to create a distributed service map for " + "visualization in OpenSearch Dashboards.") public class ServiceMapProcessorConfig { private static final String WINDOW_DURATION = "window_duration"; static final int DEFAULT_WINDOW_DURATION = 180; static final String DEFAULT_DB_PATH = "data/service-map/"; + static final String DB_PATH = "db_path"; - @JsonProperty(WINDOW_DURATION) + @JsonProperty(value = WINDOW_DURATION, defaultValue = "" + DEFAULT_WINDOW_DURATION) @JsonPropertyDescription("Represents the fixed time window, in seconds, " + - "during which service map relationships are evaluated. Default value is 180.") + "during which service map relationships are evaluated.") private int windowDuration = DEFAULT_WINDOW_DURATION; + @NotEmpty + @JsonProperty(value = DB_PATH, defaultValue = DEFAULT_DB_PATH) + @JsonPropertyDescription("Represents folder path for creating database files storing transient data off heap memory" + + "when processing service-map data.") + private String dbPath = DEFAULT_DB_PATH; + public int getWindowDuration() { return windowDuration; } + + public String getDbPath() { + return dbPath; + } } diff --git a/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessor.java b/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessor.java index 667b8ea882..a5be56724f 100644 --- a/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessor.java +++ b/data-prepper-plugins/service-map-stateful/src/main/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessor.java @@ -84,7 +84,7 @@ public ServiceMapStatefulProcessor( final PluginMetrics pluginMetrics, final PipelineDescription pipelineDescription) { this((long) serviceMapProcessorConfig.getWindowDuration() * TO_MILLIS, - new File(ServiceMapProcessorConfig.DEFAULT_DB_PATH), + new File(serviceMapProcessorConfig.getDbPath()), Clock.systemUTC(), pipelineDescription.getNumberOfProcessWorkers(), pluginMetrics); diff --git a/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfigTest.java b/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfigTest.java index 35ef3b0c07..cc6d5b3c8a 100644 --- a/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfigTest.java +++ b/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapProcessorConfigTest.java @@ -5,6 +5,7 @@ import org.opensearch.dataprepper.test.helper.ReflectivelySetField; import java.util.Random; +import java.util.UUID; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; @@ -23,6 +24,7 @@ void setUp() { @Test void testDefaultConfig() { assertThat(serviceMapProcessorConfig.getWindowDuration(), equalTo(DEFAULT_WINDOW_DURATION)); + assertThat(serviceMapProcessorConfig.getDbPath(), equalTo(ServiceMapProcessorConfig.DEFAULT_DB_PATH)); } @Test @@ -33,6 +35,12 @@ void testGetter() throws NoSuchFieldException, IllegalAccessException { serviceMapProcessorConfig, "windowDuration", windowDuration); - assertThat(serviceMapProcessorConfig.getWindowDuration(), equalTo(windowDuration)); + final String testDbPath = UUID.randomUUID().toString(); + ReflectivelySetField.setField( + ServiceMapProcessorConfig.class, + serviceMapProcessorConfig, + "dbPath", + testDbPath); + assertThat(serviceMapProcessorConfig.getDbPath(), equalTo(testDbPath)); } } \ No newline at end of file diff --git a/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessorTest.java b/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessorTest.java index cae81c8134..96c256e624 100644 --- a/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessorTest.java +++ b/data-prepper-plugins/service-map-stateful/src/test/java/org/opensearch/dataprepper/plugins/processor/ServiceMapStatefulProcessorTest.java @@ -130,6 +130,7 @@ private Set evaluateEdges(Set serv @Test public void testDataPrepperConstructor() { when(pipelineDescription.getNumberOfProcessWorkers()).thenReturn(4); + when(serviceMapProcessorConfig.getDbPath()).thenReturn(ServiceMapProcessorConfig.DEFAULT_DB_PATH); //Nothing is accessible to validate, so just verify that no exception is thrown. final ServiceMapStatefulProcessor serviceMapStatefulProcessor = new ServiceMapStatefulProcessor( serviceMapProcessorConfig, pluginMetrics, pipelineDescription); @@ -426,6 +427,7 @@ public void testPrepareForShutdownWithEventRecordData() { @Test public void testGetIdentificationKeys() { when(pipelineDescription.getNumberOfProcessWorkers()).thenReturn(4); + when(serviceMapProcessorConfig.getDbPath()).thenReturn(ServiceMapProcessorConfig.DEFAULT_DB_PATH); final ServiceMapStatefulProcessor serviceMapStatefulProcessor = new ServiceMapStatefulProcessor( serviceMapProcessorConfig, pluginMetrics, pipelineDescription); final Collection expectedIdentificationKeys = serviceMapStatefulProcessor.getIdentificationKeys(); diff --git a/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessor.java b/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessor.java index cadd463ae9..0f0b24fbdf 100644 --- a/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessor.java +++ b/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessor.java @@ -106,8 +106,8 @@ protected Record createNewRecordFromEvent(final Event recordEvent, String splitV protected void addToAcknowledgementSetFromOriginEvent(Event recordEvent, Event originRecordEvent) { DefaultEventHandle eventHandle = (DefaultEventHandle) originRecordEvent.getEventHandle(); - if (eventHandle != null && eventHandle.getAcknowledgementSet() != null) { - eventHandle.getAcknowledgementSet().add(recordEvent); + if (eventHandle != null) { + eventHandle.addEventHandle(recordEvent.getEventHandle()); } } diff --git a/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorConfig.java b/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorConfig.java index 140e280710..2c7b009e78 100644 --- a/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorConfig.java +++ b/data-prepper-plugins/split-event-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorConfig.java @@ -17,25 +17,34 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; @JsonPropertyOrder -@JsonClassDescription("The `split_event` processor is used to split events based on a delimiter and " + +@JsonClassDescription("The split_event processor is used to split events based on a delimiter and " + "generates multiple events from a user-specified field.") public class SplitEventProcessorConfig { + static final String DELIMITER_REGEX_KEY = "delimiter_regex"; + @NotEmpty @NotNull @JsonProperty("field") - @JsonPropertyDescription("The event field to be split") + @JsonPropertyDescription("The event field to be split.") private String field; - @JsonProperty("delimiter_regex") - @JsonPropertyDescription("The regular expression used as the delimiter for splitting the field") - private String delimiterRegex; - @Size(min = 1, max = 1) - @JsonPropertyDescription("The delimiter used for splitting the field. If not specified, the default delimiter is used") + @JsonPropertyDescription("The delimiter character used for splitting the field. You must provide either the delimiter or the delimiter_regex.") + @AlsoRequired(values = { + @AlsoRequired.Required(name=DELIMITER_REGEX_KEY, allowedValues = {"null", "\"\""}) + }) private String delimiter; + @JsonProperty(DELIMITER_REGEX_KEY) + @JsonPropertyDescription("The regular expression used as the delimiter for splitting the field. You must provide either the delimiter or the delimiter_regex.") + @AlsoRequired(values = { + @AlsoRequired.Required(name="delimiter", allowedValues = {"null", "\"\""}) + }) + private String delimiterRegex; + public String getField() { return field; } diff --git a/data-prepper-plugins/split-event-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorTest.java b/data-prepper-plugins/split-event-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorTest.java index 4e8944ab91..5c67e123ba 100644 --- a/data-prepper-plugins/split-event-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorTest.java +++ b/data-prepper-plugins/split-event-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/splitevent/SplitEventProcessorTest.java @@ -376,7 +376,7 @@ public void testAddToAcknowledgementSetFromOriginEvent() { DefaultEventHandle spyEventHandle = (DefaultEventHandle) spyEvent.getEventHandle(); // Verify that the add method is called on the acknowledgement set - verify(spyEventHandle).getAcknowledgementSet(); + verify(spyEventHandle).addEventHandle(recordEvent.getEventHandle()); AcknowledgementSet spyAckSet = spyEventHandle.getAcknowledgementSet(); DefaultEventHandle eventHandle = (DefaultEventHandle) recordEvent.getEventHandle(); diff --git a/data-prepper-plugins/trace-peer-forwarder-processor/README.md b/data-prepper-plugins/trace-peer-forwarder-processor/README.md index 94d0479507..b7dce43c35 100644 --- a/data-prepper-plugins/trace-peer-forwarder-processor/README.md +++ b/data-prepper-plugins/trace-peer-forwarder-processor/README.md @@ -1,7 +1,7 @@ # Trace Peer Forwarder Processor This processor is used to reduce the number of Events that will be forwarded in a Trace Analytics pipeline by half when using [Peer Forwarder](https://github.com/opensearch-project/data-prepper/blob/main/docs/peer_forwarder.md). -It groups the events based on `trace_id` similar to `service_map_stateful` and `otel_trace_raw ` processors. +It groups the events based on `trace_id` similar to `service_map` and `otel_traces ` processors. In [Trace Analytics pipeline](https://github.com/opensearch-project/data-prepper/blob/main/docs/trace_analytics.md#trace-analytics-pipeline) each event is duplicated, when it is sent from `otel-trace-pipeline` to `raw-pipeline` and `service-map-pipeline`. So, the event will be forwarded once in each pipeline. Using this processor event will be forwarded only once in `otel-trace-pipeline` to correct peer. @@ -26,7 +26,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: service-map-pipeline: @@ -35,7 +35,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: ``` diff --git a/data-prepper-plugins/trace-peer-forwarder-processor/build.gradle b/data-prepper-plugins/trace-peer-forwarder-processor/build.gradle index 5d926e9432..fd85ce3dbc 100644 --- a/data-prepper-plugins/trace-peer-forwarder-processor/build.gradle +++ b/data-prepper-plugins/trace-peer-forwarder-processor/build.gradle @@ -9,4 +9,6 @@ plugins { dependencies { implementation project(':data-prepper-api') + implementation 'com.fasterxml.jackson.core:jackson-core' + implementation 'com.fasterxml.jackson.core:jackson-databind' } diff --git a/data-prepper-plugins/trace-peer-forwarder-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/TracePeerForwarderProcessor.java b/data-prepper-plugins/trace-peer-forwarder-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/TracePeerForwarderProcessor.java index bc310a30f4..0332f5378f 100644 --- a/data-prepper-plugins/trace-peer-forwarder-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/TracePeerForwarderProcessor.java +++ b/data-prepper-plugins/trace-peer-forwarder-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/TracePeerForwarderProcessor.java @@ -17,11 +17,12 @@ import java.util.Collection; import java.util.Collections; -@DataPrepperPlugin(name = "trace_peer_forwarder", pluginType = Processor.class) +@DataPrepperPlugin(name = "trace_peer_forwarder", pluginType = Processor.class, + pluginConfigurationType = TracePeerForwarderProcessorConfig.class) public class TracePeerForwarderProcessor extends AbstractProcessor, Record> implements RequiresPeerForwarding { @DataPrepperPluginConstructor - public TracePeerForwarderProcessor(PluginMetrics pluginMetrics) { + public TracePeerForwarderProcessor(final PluginMetrics pluginMetrics) { super(pluginMetrics); } diff --git a/data-prepper-plugins/trace-peer-forwarder-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/TracePeerForwarderProcessorConfig.java b/data-prepper-plugins/trace-peer-forwarder-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/TracePeerForwarderProcessorConfig.java new file mode 100644 index 0000000000..b4b75ccae1 --- /dev/null +++ b/data-prepper-plugins/trace-peer-forwarder-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/TracePeerForwarderProcessorConfig.java @@ -0,0 +1,8 @@ +package org.opensearch.dataprepper.plugins.processor; + +import com.fasterxml.jackson.annotation.JsonClassDescription; + +@JsonClassDescription("The trace_peer_forwarder processor is used with peer forwarder to reduce by half " + + "the number of events forwarded in a Trace Analytics pipeline.") +public class TracePeerForwarderProcessorConfig { +} diff --git a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/FileParameterConfig.java b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/FileParameterConfig.java index 83dc30952e..06b488745e 100644 --- a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/FileParameterConfig.java +++ b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/FileParameterConfig.java @@ -19,7 +19,7 @@ public class FileParameterConfig { private String fileName; @JsonProperty("aws") - @JsonPropertyDescription("The AWS configuration when the file is an S3 object. ") + @JsonPropertyDescription("The AWS configuration when the file is an S3 object.") @Valid private S3ObjectConfig awsConfig; diff --git a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/MappingsParameterConfig.java b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/MappingsParameterConfig.java index 1bcb14c7a8..d67c49fa01 100644 --- a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/MappingsParameterConfig.java +++ b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/MappingsParameterConfig.java @@ -20,6 +20,7 @@ public class MappingsParameterConfig { @JsonProperty("targets") @JsonPropertyDescription("A list of target field configurations, such as the target field key or translation maps.") @Valid + @NotNull private List targetsParameterConfigs = new ArrayList<>(); public Object getSource() { diff --git a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TargetsParameterConfig.java b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TargetsParameterConfig.java index 18e796b593..07b1967c03 100644 --- a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TargetsParameterConfig.java +++ b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TargetsParameterConfig.java @@ -6,6 +6,7 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import org.apache.commons.lang3.Range; +import org.opensearch.dataprepper.model.annotations.AlsoRequired; import org.opensearch.dataprepper.plugins.processor.mutateevent.TargetType; import org.opensearch.dataprepper.typeconverter.TypeConverter; @@ -18,6 +19,8 @@ import java.util.stream.Stream; public class TargetsParameterConfig { + static final String MAP_KEY = "map"; + static final String REGEX_KEY = "regex"; private final TypeConverter converter; private final LinkedHashMap, Object> rangeMappings = new LinkedHashMap<>(); private final Map individualMappings = new HashMap<>(); @@ -27,23 +30,30 @@ public class TargetsParameterConfig { @NotNull @NotEmpty private String target; - @JsonProperty("map") + @JsonProperty(MAP_KEY) @JsonPropertyDescription("A list of key-value pairs that define the translations. Each key represents a possible " + "value in the source field, and the corresponding value represents what it should be translated to. " + - "For examples, see [map option](#map-option). At least one of `map` and `regex` should be configured.") + "At least one of map and regex should be configured.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = REGEX_KEY) + }) private Map map; @JsonProperty("translate_when") - @JsonPropertyDescription("Uses a [Data Prepper expression]({{site.url}}{{site.baseurl}}/data-prepper/pipelines/expression-syntax/) " + + @JsonPropertyDescription("Uses a conditional expression " + "to specify a condition for performing the translation. When specified, the expression will only translate when the condition is met.") private String translateWhen; - @JsonProperty("regex") - @JsonPropertyDescription("A map of keys that defines the translation map. For more options, see [regex option](#regex-option). " + - "At least one of `map` and `regex` should be configured.") + @JsonProperty(REGEX_KEY) + @JsonPropertyDescription("A map of keys that defines the translation map. " + + "At least one of map and regex should be configured.") + @AlsoRequired(values = { + @AlsoRequired.Required(name = MAP_KEY) + }) private RegexParameterConfiguration regexParameterConfig; @JsonProperty("default") @JsonPropertyDescription("The default value to use when no match is found during translation.") private String defaultValue; - @JsonProperty("type") + + @JsonProperty(value = "type", defaultValue = "string") @JsonPropertyDescription("Specifies the data type for the target value.") private TargetType targetType = TargetType.STRING; diff --git a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessor.java b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessor.java index d4c69bb331..682936c5b7 100644 --- a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessor.java +++ b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessor.java @@ -8,6 +8,8 @@ import org.apache.commons.lang3.Range; import org.apache.commons.lang3.math.NumberUtils; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; @@ -32,8 +34,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - @DataPrepperPlugin(name = "translate", pluginType = Processor.class, pluginConfigurationType = TranslateProcessorConfig.class) public class TranslateProcessor extends AbstractProcessor, Record> { @@ -67,8 +67,14 @@ public Collection> doExecute(Collection> records) { translateSource(sourceObject, recordEvent, targetConfig); } } catch (Exception ex) { - LOG.error(EVENT, "Error mapping the source [{}] of entry [{}]", mappingConfig.getSource(), - record.getData(), ex); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("Error mapping the source [{}] of entry [{}]") + .addArgument(mappingConfig.getSource()) + .addArgument(record.getData()) + .setCause(ex) + .log(); } } } diff --git a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessorConfig.java b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessorConfig.java index b4a9df2f85..9a519f76f9 100644 --- a/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessorConfig.java +++ b/data-prepper-plugins/translate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/translate/TranslateProcessorConfig.java @@ -19,16 +19,16 @@ import java.util.Objects; @JsonPropertyOrder -@JsonClassDescription("The `translate` processor transforms values in events into preconfigured values.") +@JsonClassDescription("The translate processor transforms values in events into preconfigured values.") public class TranslateProcessorConfig { @JsonProperty("file") - @JsonPropertyDescription("Points to the file that contains mapping configurations. For more information, see [file](#file).") + @JsonPropertyDescription("Points to the file that contains mapping configurations.") @Valid private FileParameterConfig fileParameterConfig; @JsonProperty("mappings") - @JsonPropertyDescription("Defines inline mappings. For more information, see [mappings](#mappings).") + @JsonPropertyDescription("Defines inline mappings.") @Valid private List mappingsParameterConfigs = new ArrayList<>(); diff --git a/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessor.java b/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessor.java index 6d29082bd6..6b5e4dd9fb 100644 --- a/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessor.java +++ b/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessor.java @@ -6,24 +6,24 @@ package org.opensearch.dataprepper.plugins.processor.truncate; import org.opensearch.dataprepper.expression.ExpressionEvaluator; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.metrics.PluginMetrics; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; import org.opensearch.dataprepper.model.event.Event; import org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException; -import org.opensearch.dataprepper.model.record.Record; import org.opensearch.dataprepper.model.processor.AbstractProcessor; import org.opensearch.dataprepper.model.processor.Processor; +import org.opensearch.dataprepper.model.record.Record; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collection; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; -import static org.opensearch.dataprepper.logging.DataPrepperMarkers.EVENT; - /** * This processor takes in a key and truncates its value to a string with * characters from the front or at the end or at both removed. @@ -115,7 +115,13 @@ public Collection> doExecute(final Collection> recor } } } catch (final Exception e) { - LOG.error(EVENT, "There was an exception while processing Event [{}]", recordEvent, e); + LOG.atError() + .addMarker(EVENT) + .addMarker(NOISY) + .setMessage("There was an exception while processing Event [{}]") + .addArgument(recordEvent) + .setCause(e) + .log(); } } diff --git a/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessorConfig.java b/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessorConfig.java index ce713d061e..0b7f263b65 100644 --- a/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessorConfig.java +++ b/data-prepper-plugins/truncate-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/truncate/TruncateProcessorConfig.java @@ -17,7 +17,7 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `truncate` processor truncates a key’s value at the beginning, the end, " + +@JsonClassDescription("The truncate processor truncates a key's value at the beginning, the end, " + "or on both sides of the value string, based on the processor’s configuration.") public class TruncateProcessorConfig { public static class Entry { @@ -26,9 +26,9 @@ public static class Entry { "The default value is an empty list, which indicates that all values will be truncated.") private List sourceKeys; - @JsonProperty("start_at") - @JsonPropertyDescription("Where in the string value to start truncation. " + - "Default is `0`, which specifies to start truncation at the beginning of each key's value.") + @JsonProperty(value = "start_at", defaultValue = "0") + @JsonPropertyDescription("The index into the string value to start truncation. " + + "Default is 0, which specifies to start truncation at the beginning of each key's value.") private Integer startAt; @JsonProperty("length") @@ -37,11 +37,12 @@ public static class Entry { private Integer length; @JsonProperty("recursive") - @JsonPropertyDescription("Recursively truncates the fields. If the value of a field is a map (json object), then it recursively applies truncate operation on the fields in the map.") + @JsonPropertyDescription("Recursively truncates the fields. If the value of a field is a map, then it recursively applies truncate operation on the fields in the map.") private Boolean recurse = false; @JsonProperty("truncate_when") - @JsonPropertyDescription("A condition that, when met, determines when the truncate operation is performed.") + @JsonPropertyDescription("A conditional expression such as /test != false. " + + "If specified, the truncate processor will only run on events when the expression evaluates to true. ") private String truncateWhen; public Entry(final List sourceKeys, final Integer startAt, final Integer length, final String truncateWhen, final Boolean recurse) { diff --git a/data-prepper-plugins/user-agent-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/useragent/UserAgentProcessorConfig.java b/data-prepper-plugins/user-agent-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/useragent/UserAgentProcessorConfig.java index df343d9b0a..9ab8219b0f 100644 --- a/data-prepper-plugins/user-agent-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/useragent/UserAgentProcessorConfig.java +++ b/data-prepper-plugins/user-agent-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/useragent/UserAgentProcessorConfig.java @@ -18,8 +18,8 @@ import java.util.List; @JsonPropertyOrder -@JsonClassDescription("The `user_agent` processor parses any user agent (UA) string in an event and then adds the " + - "parsing results to the event’s write data.") +@JsonClassDescription("The user_agent processor parses any user agent (UA) string in an event and then adds the " + + "parsed results to the event.") public class UserAgentProcessorConfig { private static final int DEFAULT_CACHE_SIZE = 1000; @@ -32,21 +32,21 @@ public class UserAgentProcessorConfig { private EventKey source; @NotNull - @JsonProperty("target") - @JsonPropertyDescription("The field to which the parsed event will write. Default is `user_agent`.") + @JsonProperty(value = "target", defaultValue = "user_agent") + @JsonPropertyDescription("The field to which the parsed event will write. Default is user_agent.") private String target = "user_agent"; @NotNull @JsonProperty("exclude_original") - @JsonPropertyDescription("Determines whether to exclude the original UA string from the parsing result. Defaults to `false`. ") + @JsonPropertyDescription("Determines whether to exclude the original UA string from the parsing result. Defaults to false.") private boolean excludeOriginal = false; - @JsonProperty("cache_size") - @JsonPropertyDescription("The cache size of the parser in megabytes. Defaults to `1000`.") + @JsonProperty(value = "cache_size", defaultValue = "1000") + @JsonPropertyDescription("The cache size of the parser in megabytes. Defaults to 1000.") private int cacheSize = DEFAULT_CACHE_SIZE; @JsonProperty("tags_on_parse_failure") - @JsonPropertyDescription("The tag to add to an event if the `user_agent` processor fails to parse the UA string.") + @JsonPropertyDescription("The tag to add to an event if the user_agent processor fails to parse the UA string.") private List tagsOnParseFailure; public EventKey getSource() { diff --git a/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessor.java b/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessor.java index 8e9ce379ce..51902aeb6d 100644 --- a/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessor.java +++ b/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessor.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import io.micrometer.core.instrument.Counter; +import static org.opensearch.dataprepper.logging.DataPrepperMarkers.NOISY; import org.opensearch.dataprepper.model.annotations.DataPrepperPlugin; import org.opensearch.dataprepper.model.annotations.DataPrepperPluginConstructor; import org.opensearch.dataprepper.metrics.PluginMetrics; @@ -52,7 +53,7 @@ public Collection> doExecute(Collection> records) { try { event.put(target, objectMapper.writeValueAsString(value)); } catch (Exception e) { - LOG.error("Failed to convert source to json string", e); + LOG.error(NOISY, "Failed to convert source to json string", e); writeJsonFailedCounter.increment(); } } diff --git a/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessorConfig.java b/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessorConfig.java index f93e53bc24..157a9ac074 100644 --- a/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessorConfig.java +++ b/data-prepper-plugins/write-json-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/write_json/WriteJsonProcessorConfig.java @@ -12,7 +12,7 @@ import jakarta.validation.constraints.NotNull; @JsonPropertyOrder -@JsonClassDescription("The `write_json` processor converts an object in an event into a JSON string.") +@JsonClassDescription("The write_json processor converts an object in an event into a JSON string.") public class WriteJsonProcessorConfig { @JsonProperty("source") @JsonPropertyDescription("Specifies the name of the field in the event containing the message or object to be parsed.") diff --git a/data-prepper-test-event/src/main/java/org/opensearch/dataprepper/core/event/TestEventConfigurationContainer.java b/data-prepper-test-event/src/main/java/org/opensearch/dataprepper/core/event/TestEventConfigurationContainer.java new file mode 100644 index 0000000000..cb28168146 --- /dev/null +++ b/data-prepper-test-event/src/main/java/org/opensearch/dataprepper/core/event/TestEventConfigurationContainer.java @@ -0,0 +1,14 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.core.event; + +public class TestEventConfigurationContainer { + public static EventConfiguration testEventConfiguration() { + final EventConfiguration eventConfiguration = new EventConfiguration(); + eventConfiguration.setMaximumCachedKeys(0); + return eventConfiguration; + } +} diff --git a/data-prepper-test-event/src/main/java/org/opensearch/dataprepper/event/TestEventContext.java b/data-prepper-test-event/src/main/java/org/opensearch/dataprepper/event/TestEventContext.java index 6c5b001129..12ffeadadb 100644 --- a/data-prepper-test-event/src/main/java/org/opensearch/dataprepper/event/TestEventContext.java +++ b/data-prepper-test-event/src/main/java/org/opensearch/dataprepper/event/TestEventContext.java @@ -5,7 +5,9 @@ package org.opensearch.dataprepper.event; +import org.opensearch.dataprepper.core.event.EventConfigurationContainer; import org.opensearch.dataprepper.core.event.EventFactoryApplicationContextMarker; +import org.opensearch.dataprepper.core.event.TestEventConfigurationContainer; import org.springframework.context.annotation.AnnotationConfigApplicationContext; class TestEventContext { @@ -16,6 +18,7 @@ private TestEventContext() {} static T getFromContext(final Class targetClass) { if(APPLICATION_CONTEXT == null) { APPLICATION_CONTEXT = new AnnotationConfigApplicationContext(); + APPLICATION_CONTEXT.registerBean(EventConfigurationContainer.class, () -> TestEventConfigurationContainer::testEventConfiguration); APPLICATION_CONTEXT.scan(EventFactoryApplicationContextMarker.class.getPackageName()); APPLICATION_CONTEXT.refresh(); } diff --git a/docs/configuration.md b/docs/configuration.md index 9a3a58bdde..2a3035bc7f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -52,7 +52,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - stdout: service-map-pipeline: @@ -62,7 +62,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - stdout: ``` diff --git a/docs/core_apis.md b/docs/core_apis.md index d4acc03caa..10ee66c905 100644 --- a/docs/core_apis.md +++ b/docs/core_apis.md @@ -95,7 +95,7 @@ authentication: ### Peer Forwarder Peer forwarder can be configured to enable stateful aggregation across multiple Data Prepper nodes. For more information on configuring Peer Forwarder, see [Peer Forwarder Configuration](https://github.com/opensearch-project/data-prepper/blob/main/docs/peer_forwarder.md). -It is supported by `service_map_stateful`, `otel_trace_raw` and `aggregate` processors. +It is supported by `service_map`, `otel_traces` and `aggregate` processors. ### Shutdown Timeouts When the DataPrepper `shutdown` API is invoked, the sink and processor `ExecutorService`'s are given time to gracefully shutdown and clear any in-flight data. The default graceful shutdown timeout for these `ExecutorService`'s is 10 seconds. This can be configured with the following optional parameters: diff --git a/docs/peer_forwarder.md b/docs/peer_forwarder.md index 6fa5fd2ca8..e1d4ee33ac 100644 --- a/docs/peer_forwarder.md +++ b/docs/peer_forwarder.md @@ -1,9 +1,9 @@ ## Peer Forwarder -An HTTP service which performs peer forwarding of `Event` between Data Prepper nodes for aggregation. Currently, supported by `aggregate`, `service_map_stateful`, `otel_trace_raw` processors. +An HTTP service which performs peer forwarding of `Event` between Data Prepper nodes for aggregation. Currently, supported by `aggregate`, `service_map`, `otel_traces` processors. Peer Forwarder groups events based on the identification keys provided the processors. -For `service_map_stateful` and `otel_trace_raw` it's `traceId` by default and can not be configured. +For `service_map` and `otel_traces` it's `traceId` by default and can not be configured. It's configurable for `aggregate` processor using `identification_keys` configuration option. You can find more information about identification keys [here](https://github.com/opensearch-project/data-prepper/tree/main/data-prepper-plugins/aggregate-processor#identification_keys). --- diff --git a/docs/trace_analytics.md b/docs/trace_analytics.md index a9a667a0be..a7cfa5df16 100644 --- a/docs/trace_analytics.md +++ b/docs/trace_analytics.md @@ -33,9 +33,9 @@ The [OpenTelemetry source](../data-prepper-plugins/otel-trace-source/README.md) ### Processor We have two processor for the Trace Analytics feature, -* *otel_trace_raw* - This is a processor that receives collection of [Span](../data-prepper-api/src/main/java/org/opensearch/dataprepper/model/trace/Span.java) records sent from [otel-trace-source](../data-prepper-plugins/otel-trace-source/README.md), does stateful processing on extracting and filling-in trace group related fields. +* *otel_traces* - This is a processor that receives collection of [Span](../data-prepper-api/src/main/java/org/opensearch/dataprepper/model/trace/Span.java) records sent from [otel-trace-source](../data-prepper-plugins/otel-trace-source/README.md), does stateful processing on extracting and filling-in trace group related fields. * *otel_trace_group* - This is a processor that fills in the missing trace group related fields in the collection of [Span](../data-prepper-api/src/main/java/org/opensearch/dataprepper/model/trace/Span.java) records by looking up the opensearch backend. -* *service_map_stateful* - This processor performs the required preprocessing on the trace data and build metadata to display the service-map OpenSearch Dashboards dashboards. +* *service_map* - This processor performs the required preprocessing on the trace data and build metadata to display the service-map OpenSearch Dashboards dashboards. ### OpenSearch sink @@ -118,7 +118,7 @@ raw-pipeline: # The raw processor does bulk request to your OpenSearch sink, so configure the batch_size higher. batch_size: 3200 processor: - - otel_trace_raw: + - otel_traces: - otel_trace_group: hosts: [ "https://localhost:9200" ] # Change to your credentials @@ -152,7 +152,7 @@ service-map-pipeline: pipeline: name: "otel-trace-pipeline" processor: - - service_map_stateful: + - service_map: # The window duration is the maximum length of time the data prepper stores the most recent trace data to evaluvate service-map relationships. # The default is 3 minutes, this means we can detect relationships between services from spans reported in last 3 minutes. # Set higher value if your applications have higher latency. @@ -250,7 +250,7 @@ pipeline authors the ability to configure other processors to modify spans or tr To provide a migration path, Data Prepper 1.4 introduced the following changes. * The `otel_trace_source` has an optional parameter `record_type` which can be set to `event`. When configured, it will output event objects. -* The `otel_trace_raw` replaces `otel_trace_raw_prepper` for event-based spans. +* The `otel_traces` replaces `otel_trace_raw_prepper` for event-based spans. * The `otel_trace_group` replaces `otel_trace_group_prepper` for event-based spans. In Data Prepper 2.0, the `otel_trace_source` will only output Events. Data Prepper 2.0 also removes diff --git a/examples/config/example-pipelines.yaml b/examples/config/example-pipelines.yaml index 40ea9df0c9..f965e87415 100644 --- a/examples/config/example-pipelines.yaml +++ b/examples/config/example-pipelines.yaml @@ -13,7 +13,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: hosts: [ "https://..es.amazonaws.com" ] @@ -26,7 +26,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: hosts: [ "https://..es.amazonaws.com" ] diff --git a/examples/dev/data-prepper-emf-monitoring/data-prepper-emf-demo-cfn.yaml b/examples/dev/data-prepper-emf-monitoring/data-prepper-emf-demo-cfn.yaml index dc1a82c471..78255de1d7 100644 --- a/examples/dev/data-prepper-emf-monitoring/data-prepper-emf-demo-cfn.yaml +++ b/examples/dev/data-prepper-emf-monitoring/data-prepper-emf-demo-cfn.yaml @@ -52,7 +52,7 @@ Resources: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - stdout: - Name: DATA_PREPPER_CONFIG_YAML diff --git a/examples/dev/data-prepper-emf-monitoring/pipelines-raw-trace-stdout.yaml b/examples/dev/data-prepper-emf-monitoring/pipelines-raw-trace-stdout.yaml index e71252a71c..948ddf532d 100644 --- a/examples/dev/data-prepper-emf-monitoring/pipelines-raw-trace-stdout.yaml +++ b/examples/dev/data-prepper-emf-monitoring/pipelines-raw-trace-stdout.yaml @@ -11,7 +11,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: # trace_flush_interval: 6 sink: - stdout: diff --git a/examples/dev/k8s/data-prepper.yaml b/examples/dev/k8s/data-prepper.yaml index 3b90587aef..323ae29592 100644 --- a/examples/dev/k8s/data-prepper.yaml +++ b/examples/dev/k8s/data-prepper.yaml @@ -26,7 +26,7 @@ data: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: hosts: [ "https://opensearch:9200" ] @@ -40,7 +40,7 @@ data: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: hosts: ["https://opensearch:9200"] diff --git a/examples/dev/trace-analytics-sample-app/resources/pipelines.yaml b/examples/dev/trace-analytics-sample-app/resources/pipelines.yaml index 535419167f..3c61358af4 100644 --- a/examples/dev/trace-analytics-sample-app/resources/pipelines.yaml +++ b/examples/dev/trace-analytics-sample-app/resources/pipelines.yaml @@ -16,7 +16,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: hosts: [ "https://node-0.example.com:9200" ] @@ -30,7 +30,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: hosts: ["https://node-0.example.com:9200"] diff --git a/examples/jaeger-hotrod/pipelines.yaml b/examples/jaeger-hotrod/pipelines.yaml index ef9ec67dba..8d628a6406 100644 --- a/examples/jaeger-hotrod/pipelines.yaml +++ b/examples/jaeger-hotrod/pipelines.yaml @@ -13,7 +13,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: hosts: [ "https://node-0.example.com:9200" ] @@ -27,7 +27,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: hosts: ["https://node-0.example.com:9200"] diff --git a/examples/metrics-ingestion-otel/README.md b/examples/metrics-ingestion-otel/README.md new file mode 100644 index 0000000000..87a99ff314 --- /dev/null +++ b/examples/metrics-ingestion-otel/README.md @@ -0,0 +1,26 @@ +# DataPrepper Metrics Ingestion from OpenTelemetry Collector + +This is an example of using the OpenTelemetry Collector to send metrics data to Data Prepper and then to OpenSearch. +The Data Prepper OTLP/gRPC endpoint is exposed at port 21891. +The same protocol can be used with the OpenTelemetry Collector, which listens at the OTLP default port 4317. +This setup allows to compare both endpoints. +The Collector will forward any data to Data Prepper for indexing in OpenSearch. + +To generate some demo data, the OpenTelemetry Collector uses its host metrics receiver to acquire cpu and memory metrics on the machine it is running on. +Additionally, it scrapes the Prometheus metrics endpoint of the Data Prepper instance. +This also let's you investigate the Data Prepper metrics in OpenSearch. + +To run: + +1. Run `docker compose up` +2. Wait for everything to come up. +3. Log into OpenSearch Dashboards at using username `admin` and password `Developer@123`. +4. Create an Index Pattern for index `otel_metrics` choosing `time` as the time field. +5. Inspect the data in the Discovery plugin. + +Useful changes and additions: + +1. The OpenTelemetry Collector has its [Logging Exporter](https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/loggingexporter/README.md) in use. Changing the `loglevel` to `debug` or setting the `verbosity` to `detailed` will log all data to stdout. This is useful for troubleshooting. +2. The OpenTelemetry Collector can push its own metrics to Data Prepper. Follow its documentation in [Internal telemetry](https://opentelemetry.io/docs/collector/internal-telemetry/#use-internal-telemetry-to-monitor-the-collector) for details. These metrics allow comparing the event counts between the Collector and Data Prepper. +3. The OpenTelemetry Collector can be configured to translate between OTLP/HTTP and OTLP/gRPC. It can be used to proxy between sources only capable of OTLP/HTTP and Data Prepper, which only supports OTLP/gRPC. +4. The OpenTelemetry Collector can receive data from the Docker host. It can attach metadata describing the containers. Unfortunately, the required processor does not work with MacOS, so this config was not provided in this example. diff --git a/examples/metrics-ingestion-otel/docker-compose.yaml b/examples/metrics-ingestion-otel/docker-compose.yaml new file mode 100644 index 0000000000..ac639fe615 --- /dev/null +++ b/examples/metrics-ingestion-otel/docker-compose.yaml @@ -0,0 +1,69 @@ +version: '3' +services: + data-prepper: + image: opensearchproject/data-prepper + container_name: data-prepper + volumes: + - ./metric_pipeline.yaml:/usr/share/data-prepper/pipelines/metric_pipeline.yaml + - ../data-prepper-config.yaml:/usr/share/data-prepper/config/data-prepper-config.yaml + ports: + - 2021:2021 + - 21891:21891 + - 4900:4900 + expose: + - "2021" + - "4900" + - "21891" + networks: + - opensearch-net + depends_on: + - opensearch + opensearch: + container_name: opensearch + image: docker.io/opensearchproject/opensearch:latest + environment: + - discovery.type=single-node + - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping + - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM + - "OPENSEARCH_INITIAL_ADMIN_PASSWORD=Developer@123" + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems + hard: 65536 + ports: + - 9200:9200 + - 9600:9600 # required for Performance Analyzer + networks: + - opensearch-net + dashboards: + image: docker.io/opensearchproject/opensearch-dashboards:latest + container_name: opensearch-dashboards + ports: + - 5601:5601 + expose: + - "5601" + environment: + OPENSEARCH_HOSTS: '["https://opensearch:9200"]' + depends_on: + - opensearch + networks: + - opensearch-net + otel-collector: + image: otel/opentelemetry-collector-contrib + container_name: otel-collector + command: ["--config=/etc/otel-collector-config.yml"] + volumes: + - ./otel-collector-config.yml:/etc/otel-collector-config.yml + environment: + OTEL_RESOURCE_ATTRIBUTES: service.name=otel-collector + ports: + - 4317:4317 + depends_on: + - data-prepper + networks: + - opensearch-net +networks: + opensearch-net: diff --git a/examples/metrics-ingestion-otel/metric_pipeline.yaml b/examples/metrics-ingestion-otel/metric_pipeline.yaml new file mode 100644 index 0000000000..613227522f --- /dev/null +++ b/examples/metrics-ingestion-otel/metric_pipeline.yaml @@ -0,0 +1,13 @@ +metric-pipeline: + source: + otel_metrics_source: + ssl: false + processor: + - otel_metrics: + sink: + - opensearch: + hosts: [ "https://opensearch:9200" ] + insecure: true + username: admin + password: Developer@123 + index: otel_metrics diff --git a/examples/metrics-ingestion-otel/otel-collector-config.yml b/examples/metrics-ingestion-otel/otel-collector-config.yml new file mode 100644 index 0000000000..5b6cb2ee2b --- /dev/null +++ b/examples/metrics-ingestion-otel/otel-collector-config.yml @@ -0,0 +1,37 @@ +receivers: + hostmetrics: + collection_interval: 60s + scrapers: + cpu: + memory: + prometheus: + config: + scrape_configs: + - job_name: data-prepper + metrics_path: /metrics/sys + scrape_interval: 60s + static_configs: + - targets: ['data-prepper:4900'] + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 +exporters: + otlp/metrics: + endpoint: data-prepper:21891 + tls: + insecure: true + otlphttp/metrics: + metrics_endpoint: http://data-prepper:21891/opentelemetry.proto.collector.metrics.v1.MetricsService/Export + logging: +processors: + resourcedetection/env: + detectors: [env] + timeout: 2s + override: false +service: + pipelines: + metrics: + receivers: [otlp,hostmetrics,prometheus] + processors: [resourcedetection/env] + exporters: [logging, otlp/metrics] diff --git a/examples/trace-analytics-sample-app/sample-app/requirements.txt b/examples/trace-analytics-sample-app/sample-app/requirements.txt index a24bef87af..4d73c55729 100644 --- a/examples/trace-analytics-sample-app/sample-app/requirements.txt +++ b/examples/trace-analytics-sample-app/sample-app/requirements.txt @@ -6,5 +6,8 @@ opentelemetry-instrumentation-mysql==0.46b0 opentelemetry-instrumentation-requests==0.46b0 opentelemetry-sdk==1.25.0 protobuf==3.20.3 +requests==2.32.0 +setuptools==70.0.0 urllib3==2.2.2 -werkzeug==3.0.3 \ No newline at end of file +werkzeug==3.0.3 +zipp==3.19.1 diff --git a/examples/trace_analytics.yml b/examples/trace_analytics.yml index b3f9be8b31..f5b9110409 100644 --- a/examples/trace_analytics.yml +++ b/examples/trace_analytics.yml @@ -15,7 +15,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: hosts: [ "https://node-0.example.com:9200" ] @@ -29,7 +29,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: hosts: ["https://node-0.example.com:9200"] diff --git a/examples/trace_analytics_no_ssl.yml b/examples/trace_analytics_no_ssl.yml index c82928b0d8..b7e11343f8 100644 --- a/examples/trace_analytics_no_ssl.yml +++ b/examples/trace_analytics_no_ssl.yml @@ -14,7 +14,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: hosts: [ "https://node-0.example.com:9200" ] @@ -28,7 +28,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: hosts: ["https://node-0.example.com:9200"] diff --git a/examples/trace_analytics_no_ssl_2x.yml b/examples/trace_analytics_no_ssl_2x.yml index c6b813cffd..a1ce76575a 100644 --- a/examples/trace_analytics_no_ssl_2x.yml +++ b/examples/trace_analytics_no_ssl_2x.yml @@ -13,7 +13,7 @@ raw-pipeline: pipeline: name: "entry-pipeline" processor: - - otel_trace_raw: + - otel_traces: sink: - opensearch: hosts: [ "https://node-0.example.com:9200" ] @@ -27,7 +27,7 @@ service-map-pipeline: pipeline: name: "entry-pipeline" processor: - - service_map_stateful: + - service_map: sink: - opensearch: hosts: ["https://node-0.example.com:9200"] diff --git a/gradle.properties b/gradle.properties index d62bb0cc08..823b5c8578 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,5 +5,5 @@ # ATTENTION: If you are changing the version, please change the DataPrepperVersion whenever the major or minor version changes. # See: https://github.com/opensearch-project/data-prepper/blob/main/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/configuration/DataPrepperVersion.java#L9 -version=2.10.0-SNAPSHOT +version=2.11.0-SNAPSHOT org.gradle.jvmargs=-Xmx2048M diff --git a/release/release-notes/data-prepper.change-log-2.10.0.md b/release/release-notes/data-prepper.change-log-2.10.0.md new file mode 100644 index 0000000000..eaf5f42e09 --- /dev/null +++ b/release/release-notes/data-prepper.change-log-2.10.0.md @@ -0,0 +1,1055 @@ + +* __Add retry to make sure source is not shutdown when exceptions are thrown on the main thread (#5029)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Thu, 10 Oct 2024 19:47:40 -0700 + + EAD -> refs/heads/add-change-log-2.10, refs/heads/main + * Add retry to make sure source is not shutdown when exceptions are thrown on + the main thread + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + * Address review comments + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + --------- + Signed-off-by: Souvik Bose <souvbose@amazon.com> + Co-authored-by: Souvik Bose + <souvbose@amazon.com> + +* __New OpenSearch API source implementation (#5024)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Thu, 10 Oct 2024 19:45:54 -0700 + + + * Create kinesis-source-integration-tests.yml + Signed-off-by: Souvik Bose <souvik04in@gmail.com> + Signed-off-by: Souvik Bose + <souvbose@amazon.com> + + * Update kinesis-source-integration-tests.yml + Signed-off-by: Souvik Bose <souvik04in@gmail.com> + Signed-off-by: Souvik Bose + <souvbose@amazon.com> + + * OpenSearch API source implementation + Signed-off-by: Souvik Bose <souvik04in@gmail.com> + Signed-off-by: Souvik Bose + <souvbose@amazon.com> + + * Refactoring http source functionality and address comments + Signed-off-by: Souvik Bose <souvik04in@gmail.com> + Signed-off-by: Souvik Bose + <souvbose@amazon.com> + + * Fix the build break + Signed-off-by: Souvik Bose <souvik04in@gmail.com> + Signed-off-by: Souvik Bose + <souvbose@amazon.com> + + * Revert "Create kinesis-source-integration-tests.yml" + This reverts commit c52f584b61d100935e970ccfd345f6c7d2ddd117. + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + * Fix the code. + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + * Address review comments + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + * Disable the health check endpoint. + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + * Fix checkstyle imports. + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + --------- + Signed-off-by: Souvik Bose <souvik04in@gmail.com> + Signed-off-by: Souvik Bose + <souvbose@amazon.com> + Co-authored-by: Souvik Bose <souvbose@amazon.com> + +* __Adding support for compression config per stream. (#5046)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Thu, 10 Oct 2024 19:20:41 -0700 + + + Signed-off-by: Souvik Bose <souvbose@amazon.com> + Co-authored-by: Souvik Bose + <souvbose@amazon.com> + +* __Rename convert_entry_type to convert_type and keep the original name as a deprecated name. (#5047)__ + + [David Venable](mailto:dlv@amazon.com) - Thu, 10 Oct 2024 21:08:33 -0500 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Adding Kinesis README (#5048)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Thu, 10 Oct 2024 21:08:17 -0500 + + + Signed-off-by: Souvik Bose <souvbose@amazon.com> + Co-authored-by: Souvik Bose + <souvbose@amazon.com> + +* __Adding ttl_delete parameter to metadata for DynamoDB (#4982)__ + + [Lee](mailto:leeroyhannigan@yahoo.ie) - Thu, 10 Oct 2024 15:11:27 -0500 + + + Signed-off-by: Lee Hannigan <lhnng@amazon.com> + +* __Fix service map tests (#5043)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Thu, 10 Oct 2024 12:28:07 -0500 + + + + +* __Support secret rotation in RDS source (#5016)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Thu, 10 Oct 2024 12:04:07 -0500 + + + * Add stream worker refresher + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Update unit tests + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Address comments + Signed-off-by: Hai Yan <oeyh@amazon.com> + + --------- + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __FIX: mutate string processor configs (#5042)__ + + [Qi Chen](mailto:qchea@amazon.com) - Thu, 10 Oct 2024 09:37:26 -0700 + + + Signed-off-by: George Chen <qchea@amazon.com> + +* __Add NotEmpty annotation to grok match parameter (#5033)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Wed, 9 Oct 2024 15:03:34 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __ENH: expose dbPath to be configurable (#5037)__ + + [Qi Chen](mailto:qchea@amazon.com) - Wed, 9 Oct 2024 13:54:25 -0500 + + + * ENH: expose dbPath to be configurable + Signed-off-by: George Chen <qchea@amazon.com> + +* __Adding a metadata attribute for sequence number of record (#5036)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Wed, 9 Oct 2024 11:26:30 -0700 + + + * Adding a metadata attribute for sequence number of record + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + * Add test to check for the metadata + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + --------- + Signed-off-by: Souvik Bose <souvbose@amazon.com> + Co-authored-by: Souvik Bose + <souvbose@amazon.com> + +* __Documentation improvements for the aggregate processor. (#5035)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 9 Oct 2024 09:28:54 -0700 + + + Adds property and class description to configurations. Corrects property order. + Adds configuration classes with documentation for put_all and remove_duplicates + which now allows for including these. Corrects use of enums and using + @JsonValue to have usable documentation on these enums. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Fix the build break for kinesis source (#5034)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Tue, 8 Oct 2024 14:18:12 -0700 + + efs/heads/base64-codec + Signed-off-by: Souvik Bose <souvbose@amazon.com> + Co-authored-by: Souvik Bose + <souvbose@amazon.com> + +* __Documentation improvements for a number of Data Prepper processors: Re-ordering properties; adding missing documentation; missed enums. (#5026)__ + + [David Venable](mailto:dlv@amazon.com) - Tue, 8 Oct 2024 11:22:50 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Documentation improvements for a number of Data Prepper processors. (#5023)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 7 Oct 2024 13:22:45 -0700 + + + Documentation improvements for a number of Data Prepper processors. + Updates some enumerations used in processors to support the @JsonValue. + Corrects @JsonClassDescription to use HTML rather than Markdown. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Documentation improvements for a number of Data Prepper processors. (#5025)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 7 Oct 2024 13:17:55 -0700 + + + Adds missing enumerations in the key-value processor to support better + documentation. Corrects @JsonClassDescription to use HTML rather than Markdown. + This set of changes is for key_value, flatten, translate, parse_json, + parse_xml, parse_ion, and csv. Also, this adds documentation to the csv input + codec. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Add integration test for Json codec in S3 sink (#4411)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Mon, 7 Oct 2024 11:19:00 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __Make acknowledgment_timeout configurable for s3 scan source, configure timeout to 10 minutes for MongoDB L2 transform (#4988)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Mon, 7 Oct 2024 11:18:13 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __Caching implementation of EventKeyFactory (#4843)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 7 Oct 2024 09:01:54 -0700 + + + Create a caching implementation of EventKeyFactory that will cache a + configurable number of EventKeys. + Refactored the approach to loading the EventKeyFactory in the application + context for a couple of reasons: 1. Allow for skipping the + CachingEventKeyFactory if not needed; 2. Help it run better in the + data-prepper-test-event project. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Update the test logging to include the failed assertion to help investigations, especially during CI builds on GitHub Actions. (#4987)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 7 Oct 2024 07:24:46 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Providing an option for the plugins to use Spring DI (#5012)__ + + [Santhosh Gandhe](mailto:1909520+san81@users.noreply.github.com) - Fri, 4 Oct 2024 11:40:57 -0700 + + + providing an option for the plugins to use Spring DI + Signed-off-by: Santhosh Gandhe <1909520+san81@users.noreply.github.com> + Update + data-prepper-api/src/main/java/org/opensearch/dataprepper/model/annotations/DataPrepperPlugin.java + + modified the comment line based on the suggession + Co-authored-by: David Venable <dlv@amazon.com> + Signed-off-by: Santhosh Gandhe + <1909520+san81@users.noreply.github.com> + Integration test to validate the DI context enabling in plugins + + Signed-off-by: Santhosh Gandhe <1909520+san81@users.noreply.github.com> + + Co-authored-by: David Venable <dlv@amazon.com> + +* __Remove references to deprecated processor names `otel_trace_raw` and `service_map_stateful` (#5017)__ + + [Ling Hengqian](mailto:linghengqian@outlook.com) - Thu, 3 Oct 2024 13:32:21 -0700 + + + Signed-off-by: linghengqian <linghengqian@outlook.com> + +* __Updates to JSON schema and Data Prepper documentation. (#5019)__ + + [David Venable](mailto:dlv@amazon.com) - Thu, 3 Oct 2024 11:00:32 -0700 + + + Support @JsonValue for determining enumeration values in the JSON Schema. + Provide a JSON schema type of string for EventKey objects. Documentation + wording improvements to the mutate event and mutate string processors. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Add OpenTelemetry Metrics example (#5014)__ + + [Karsten Schnitter](mailto:k.schnitter@sap.com) - Thu, 3 Oct 2024 19:24:09 +0200 + + + Add OpenTelemetry Metrics example + Provides a small Docker Compose setup to show metrics ingestion + with Data + Prepper. This example is similar to the traces and logs + examples. It also + shows the metrics Data Prepper emits on its metrics + endpoint. + Signed-off-by: Karsten Schnitter <k.schnitter@sap.com> + + +* __ENH: support plugin loading in conifg (#4974)__ + + [Qi Chen](mailto:qchea@amazon.com) - Wed, 2 Oct 2024 16:00:58 -0500 + + + --------- + Signed-off-by: George Chen <qchea@amazon.com> + +* __Updates JsonPropertyDescription annotations to use HTML rather than Markdown. (#4985)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 2 Oct 2024 09:52:26 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Adding a new API to get the current transformed pipelines as a JSON (#4980)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Tue, 1 Oct 2024 11:34:43 -0700 + + + * Adding a new API to get the current transformed pipelines as a JSON + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + * Rename the api and address comments + Signed-off-by: Souvik Bose <souvbose@amazon.com> + + --------- + Signed-off-by: Souvik Bose <souvbose@amazon.com> + Co-authored-by: Souvik Bose + <souvbose@amazon.com> + +* __Add: trace peerforwarder config (#4992)__ + + [Qi Chen](mailto:qchea@amazon.com) - Tue, 1 Oct 2024 10:12:09 -0500 + + + * ADD: trace peerforwarder config + Signed-off-by: George Chen <qchea@amazon.com> + + --------- + Signed-off-by: George Chen <qchea@amazon.com> + +* __FIX: missing required fields annotation (#4990)__ + + [Qi Chen](mailto:qchea@amazon.com) - Tue, 1 Oct 2024 09:55:58 -0500 + + + Signed-off-by: George Chen <qchea@amazon.com> + +* __MAINT: update required properties and property descriptions in some processors (#4989)__ + + [Katherine Shen](mailto:40495707+shenkw1@users.noreply.github.com) - Mon, 30 Sep 2024 14:58:12 -0500 + + + * update rename key config with missing descriptions + + * update convert entry type required fields + + * update delay property description + + * putting convert entry type processor on hold due to the mutually exclusive + properties + Signed-off-by: Katherine Shen <katshen@amazon.com> + + --------- + Signed-off-by: Katherine Shen <katshen@amazon.com> + +* __Additional logging when shutting down the pipeline. (#4986)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 30 Sep 2024 08:59:14 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Support convert entry type on arrays (#4925)__ + + [Krishna Kondaka](mailto:41027584+kkondaka@users.noreply.github.com) - Fri, 27 Sep 2024 12:12:43 -0700 + + + * Support convert entry type on arrays + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Addressed review comments + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Fixed failing tests + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Addressed review comments + Signed-off-by: Kondaka <krishkdk@amazon.com> + + --------- + Signed-off-by: Kondaka <krishkdk@amazon.com> + +* __Support BigDecimal data type in expressions (#4930)__ + + [Krishna Kondaka](mailto:41027584+kkondaka@users.noreply.github.com) - Fri, 27 Sep 2024 09:04:09 -0700 + + + * Support BigDecimal data type in expressions + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Removed unused import + Signed-off-by: Kondaka <krishkdk@amazon.com> + + --------- + Signed-off-by: Kondaka <krishkdk@amazon.com> + +* __OpenSearchSink - Enhance logs to include index name and last exception information (#4841)__ + + [Krishna Kondaka](mailto:41027584+kkondaka@users.noreply.github.com) - Fri, 27 Sep 2024 09:03:47 -0700 + + + * dplive1.yaml + Signed-off-by: Krishna Kondaka + <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + + * Delete .github/workflows/static.yml + Signed-off-by: Krishna Kondaka + <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + + * OpenSearchSink - Enhance logs to include index name and last exception + information + Signed-off-by: Krishna Kondaka + <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + + * Rebased to latest and cleanup messages + Signed-off-by: Krishna Kondaka + <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + + * Fixed test errors + Signed-off-by: Krishna Kondaka + <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + + --------- + Signed-off-by: Krishna Kondaka + <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + Co-authored-by: + Krishna Kondaka <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + +* __Add origination time to buffer event and populate the partition key (#4971)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Thu, 26 Sep 2024 12:32:09 -0500 + + + Signed-off-by: Souvik Bose <souvbose@amazon.com> + Co-authored-by: Souvik Bose + <souvbose@amazon.com> + +* __Add integration test for Kinesis source (#4967)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Tue, 24 Sep 2024 16:25:02 -0500 + + + Signed-off-by: Souvik Bose <souvbose@amazon.com> + +* __Add Lambda Synchronous processor support (#4700)__ + + [Srikanth Govindarajan](mailto:srigovs@amazon.com) - Tue, 24 Sep 2024 11:01:45 -0700 + + + Add Lambda Processor Synchronous Mode support + Make LambdaClientFactory common + to sink and processor + Signed-off-by: Srikanth Govindarajan <srigovs@amazon.com> + +* __Variable drain timeouts when shutting down over HTTP shutdown. (#4970)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 23 Sep 2024 16:03:21 -0700 + + + Variable drain timeouts when shutting down over HTTP shutdown. + Adds two new parameters to the shutdown API. The first is bufferReadTimeout + which controls the amount of time to wait for the buffer to be empty. The + second is bufferDrainTimeout which controls the overall wait time for the + process worker threads to complete. + To support Data Prepper durations in HTTP query parameters, I extracted the + parsing logic for durations out of DataPrepperDurationDeserializer and into a + new DataPrepperDurationParser class. + Resolves #4966. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Add mongodb as alternate source name for documentdb source (#4969)__ + + [Dinu John](mailto:86094133+dinujoh@users.noreply.github.com) - Sun, 22 Sep 2024 13:39:13 -0500 + + + Signed-off-by: Dinu John <86094133+dinujoh@users.noreply.github.com> + +* __Add alternate name for Plugin (#4968)__ + + [Dinu John](mailto:86094133+dinujoh@users.noreply.github.com) - Sat, 21 Sep 2024 16:24:34 -0700 + + + Add alternate name for Plugin + Signed-off-by: Dinu John <86094133+dinujoh@users.noreply.github.com> + +* __Refactoring chunking in the HTTP source to improve the performance. (#4950)__ + + [David Venable](mailto:dlv@amazon.com) - Fri, 20 Sep 2024 14:00:50 -0700 + + + The HTTP source was parsing the entire message and then serializing from + strings. This created a bit of memory churn and probably duplicate processing. + The new approach is to chunk the message from the start which allows us to + stream the reading and perform copies of data. This also has a JMH benchmark + added which shows that this new approach doubles the number of operations per + second. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Update rds template with new s3 sink client options (#4963)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Fri, 20 Sep 2024 12:39:15 -0500 + + + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Fix a bug with event listener in RDS source (#4962)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Fri, 20 Sep 2024 09:41:45 -0700 + + + Unregister eventListener on stop + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Add s3 sink client options (#4959)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Thu, 19 Sep 2024 22:28:03 -0500 + + + * Add s3 sink client options + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Add upper bounds for new options + Signed-off-by: Hai Yan <oeyh@amazon.com> + + --------- + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Support AWS Kinesis Data Streams as a Source (#4836)__ + + [Souvik Bose](mailto:souvik04in@gmail.com) - Thu, 19 Sep 2024 15:23:02 -0700 + + + Support AWS Kinesis Data Streams as a Source + Signed-off-by: Souvik Bose <souvbose@amazon.com> + +* __Add acknowledgment progress check for s3 source with folder partitions (#4957)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Thu, 19 Sep 2024 10:06:46 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __Shorten S3 prefix to meet the requirement of RDS export API (#4955)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Wed, 18 Sep 2024 14:22:37 -0500 + + + * Shorten prefix + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Add unit tests + Signed-off-by: Hai Yan <oeyh@amazon.com> + + --------- + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Improve logging for exceptions (#4942)__ + + [Srikanth Govindarajan](mailto:srigovs@amazon.com) - Wed, 18 Sep 2024 09:31:49 -0700 + + + Improve logging for exceptions + Signed-off-by: Srikanth Govindarajan <srigovs@amazon.com> + +* __Add ReplaceStringProcessor for simple string substitution that doesn't involve regex (#4954)__ + + [Dinu John](mailto:86094133+dinujoh@users.noreply.github.com) - Wed, 18 Sep 2024 10:18:08 -0500 + + + * Add ReplaceStringProcessor for simple string substitution that doesn't + involve regex + Signed-off-by: Dinu John <86094133+dinujoh@users.noreply.github.com> + + * Remove unused imports + Signed-off-by: Dinu John <86094133+dinujoh@users.noreply.github.com> + + * Update when condition parameter name + Signed-off-by: Dinu John <86094133+dinujoh@users.noreply.github.com> + + --------- + Signed-off-by: Dinu John <86094133+dinujoh@users.noreply.github.com> + +* __Kafka Plugin: support for SASL/SCRAM mechanisms (#4912)__ + + [franky-m](mailto:franky.meier.1@gmx.de) - Tue, 17 Sep 2024 12:44:09 -0700 + + + Kafka Plugin SCRAM Support + Signed-off-by: Franky Meier <franky.meier.1@gmx.de> + Signed-off-by: Franky Meier <franky.meier.1@gmx.de> + Signed-off-by: George + Chen <qchea@amazon.com> + Co-authored-by: Qi Chen <qchea@amazon.com> + +* __Adds config transformation template for RDS source (#4946)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Tue, 17 Sep 2024 14:26:40 -0500 + + + * Add rules and templates for rds source + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Update rds config to prep for template + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Refactor record converters + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Add template + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Remove unused import + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Address review comments + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Revert changes on prefix + Signed-off-by: Hai Yan <oeyh@amazon.com> + + --------- + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Decrease the sleep when pausing the Kafka consumer to 1 second when the circuit breaker is in use. (#4947)__ + + [David Venable](mailto:dlv@amazon.com) - Fri, 13 Sep 2024 13:30:13 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Release events for Noop Sink (#4944)__ + + [Srikanth Govindarajan](mailto:srigovs@amazon.com) - Thu, 12 Sep 2024 16:31:16 -0500 + + + Signed-off-by: Srikanth Govindarajan <srigovs@amazon.com> + +* __Move CsvMapper and Schema creation to constructor (#4941)__ + + [Dinu John](mailto:86094133+dinujoh@users.noreply.github.com) - Thu, 12 Sep 2024 10:10:10 -0700 + + + Move CsvMapper and Schema creation to constructor + Signed-off-by: Dinu John <86094133+dinujoh@users.noreply.github.com> + +* __Fixes Jaeger Hotrod demo failure on OpenSearch 2.16.0 (#4921)__ + + [Ling Hengqian](mailto:linghengqian@outlook.com) - Wed, 11 Sep 2024 19:21:59 -0700 + + + Signed-off-by: linghengqian <linghengqian@outlook.com> + +* __Updating the WhiteSource/Mend configuration to match the version found in opensearch-system-templates. (#4933)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 11 Sep 2024 13:48:12 -0700 + + + https://github.com/opensearch-project/opensearch-system-templates/blob/e3b4fc6/.whitesource + + Signed-off-by: David Venable <dlv@amazon.com> + +* __adding registry to image value in docker-compose.yaml (#2980)__ + + [qhung](mailto:quanghung.b@gmail.com) - Tue, 10 Sep 2024 13:06:24 -0700 + + + Podman requires the registry url in order to pull out the image + Signed-off-by: qhung <11665161+quanghungb@users.noreply.github.com> + +* __Support start_time or range options for the first scan of scheduled s3 scan (#4929)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Tue, 10 Sep 2024 13:53:16 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __Add progress check callback to update partition ownership in S3 scan source (#4918)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Tue, 10 Sep 2024 11:14:00 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __ENH: add shutdown into extension plugin (#4924)__ + + [Qi Chen](mailto:qchea@amazon.com) - Tue, 10 Sep 2024 10:35:51 -0500 + + + * ENH: add shutdown into extension plugin + Signed-off-by: George Chen <qchea@amazon.com> + +* __Updated README.md according to previous changes of docker files. (#4845)__ + + [Jayesh Parmar](mailto:89792517+jayeshjeh@users.noreply.github.com) - Mon, 9 Sep 2024 22:07:40 +0200 + + + * Updated README.md for updated /examples/log-ingestion files + Signed-off-by: jayeshjeh <jay.parmar.11169@gmail.com> + + * Updated README.md for updated /examples/log-ingestion files + Signed-off-by: jayeshjeh <jay.parmar.11169@gmail.com> + + * correction + Signed-off-by: jayeshjeh <jay.parmar.11169@gmail.com> + + --------- + Signed-off-by: jayeshjeh <jay.parmar.11169@gmail.com> + +* __Updates to the code for HTTP chunking. (#4919)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 9 Sep 2024 09:27:44 -0700 + + + This refactors the code by placing all logic for serializing the data into the + Codec itself. In so doing, it allows for improved testing such as symmetric + testing. It also decouples the serialization format from the HTTP server. This + also uses the Jackson library for the serialization which yields more accurate + JSON. + Signed-off-by: David Venable <dlv@amazon.com> + +* __MAINT: add data prepper plugin schema module into build resource (#4920)__ + + [Qi Chen](mailto:qchea@amazon.com) - Fri, 6 Sep 2024 13:24:03 -0500 + + + Signed-off-by: George Chen <qchea@amazon.com> + +* __Move event processing to separate threads and add event processing timer in RDS source (#4914)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Thu, 5 Sep 2024 10:58:59 -0500 + + + * Move event processing to separate threads and add event processing timer + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Address comments + Signed-off-by: Hai Yan <oeyh@amazon.com> + + --------- + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Corrects the S3SinkStack for AWS testing (#4913)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 4 Sep 2024 14:30:28 -0700 + + + Corrects the S3SinkStack for AWS testing. + The S3SinkStack was not in use and didn't quite work. This corrects it so that + we can use it to automate the tests for the S3 sink in GitHub. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Use awaitility to read data in Kafka buffer tests to fix flakiness (#4703)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 4 Sep 2024 14:18:09 -0700 + + + Use awaitility to read data in KafkaBufferIT to promote stability and speed of + execution. Contributes toward #4168 + Signed-off-by: David Venable <dlv@amazon.com> + +* __Adds a .gitignore for Python virtual environments. (#4881)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 4 Sep 2024 12:24:52 -0700 + + + Some projects such as the trace-analytics-sample-app and the current smoke + tests use Python. Using Python virtual environments lets developers use these + without affecting their local Python environment. Ignore .venv directories + which Python virtual environments use. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Updating the instructions for releasing a new version of Data Prepper. (#4878)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 4 Sep 2024 12:24:25 -0700 + + + This adds instructions for the release setup so that maintainers can have a + consistent set of instructions to follow. Specifically, it adds steps for + setting up the branch, updating version numbers, creating the release notes and + change log. + Additionally, this fixes a broken fragment link to the Backporting section of + the Developer Guide. + Signed-off-by: David Venable <dlv@amazon.com> + +* __ENH: respect JsonProperty defaultValue in JsonSchemaConverter (#4889)__ + + [Qi Chen](mailto:qchea@amazon.com) - Tue, 3 Sep 2024 10:38:08 -0500 + + + * ENH: respect JsonProperty defaultValue in JsonSchemaConverter + Signed-off-by: George Chen <qchea@amazon.com> + +* __Minor updates and bug fixes for RDS source (#4887)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Thu, 29 Aug 2024 13:20:47 -0500 + + + * Minor updates and bug fixes to prepare for performance testing + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Address comments + Signed-off-by: Hai Yan <oeyh@amazon.com> + + --------- + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Adds a script to help generate the Thank You text for the release blogs. (#4884)__ + + [David Venable](mailto:dlv@amazon.com) - Thu, 29 Aug 2024 08:44:17 -0700 + + + Adds a script to help generate the Thank You text for the release blogs. Use en + dashes in the Thank You text to meet the standards of the project-website. When + there is no name for a GitHub user, don't include a None. + Signed-off-by: David Venable <dlv@amazon.com> + Co-authored-by: Hai Yan + <oeyh@amazon.com> + +* __Creates the release notes for Data Prepper 2.9.0 (#4879)__ + + [David Venable](mailto:dlv@amazon.com) - Wed, 28 Aug 2024 08:20:02 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __ENH: Plugin errors consolidator (#4863)__ + + [Qi Chen](mailto:qchea@amazon.com) - Tue, 27 Aug 2024 11:16:55 -0500 + + + * ENH: Plugin errors consolidator + Signed-off-by: George Chen <qchea@amazon.com> + +* __REF: data prepper plugin schema (#4872)__ + + [Qi Chen](mailto:qchea@amazon.com) - Tue, 27 Aug 2024 09:57:53 -0500 + + + Signed-off-by: George Chen <qchea@amazon.com> + +* __Add e2e acknowledgment and checkpointing to RDS source (#4819)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Mon, 26 Aug 2024 17:37:22 -0500 + + + * Add acknowledgment and checkpoint for stream + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Add unit tests for stream checkpoint + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Add acknowledgment to export + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Simplify the stream checkpointing workflow + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * A few fixes and cleanups + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Extend lease while waiting for ack + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Address review comments + Signed-off-by: Hai Yan <oeyh@amazon.com> + + * Address more review comments + Signed-off-by: Hai Yan <oeyh@amazon.com> + + --------- + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Update Spring to 5.3.39 to fix CVE-2024-38808. Require commons-configuration2 2.11.0 to fix CVE-2024-29131 and CVE-2024-29133. Hadoop pulls this dependency in. (#4874)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 26 Aug 2024 10:34:06 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Updates Bouncy Castle to 1.78.1. Update any projects that attempt to use Bouncy Castle jdk15on dependencies with the jdk18on dependency instead. This will prevent any of the older jdk15on dependencies from getting into our classpath. In particular, this was coming from hadoop-common. (#4871)__ + + [David Venable](mailto:dlv@amazon.com) - Mon, 26 Aug 2024 08:30:35 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Require dnsjava 3.6.1 to resolve CVE-2024-25638. This is a transitive dependency from Hadoop. (#4868)__ + + [David Venable](mailto:dlv@amazon.com) - Fri, 23 Aug 2024 14:49:17 -0700 + + + Signed-off-by: David Venable <dlv@amazon.com> + +* __Removes the trace-analytics-sample-app from the examples that are provided in the release. (#4867)__ + + [David Venable](mailto:dlv@amazon.com) - Fri, 23 Aug 2024 14:49:10 -0700 + + + The motivation for removing this is that the samples pull in dependencies which + often trigger CVE reports. It is not likely customers are trying to run this + example from a Data Prepper deployment, especially since the example is not + made to run from the installed version, but runs from Docker and runs using the + latest 2.x version. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Fix visibility timeout errors (#4812) (#4831)__ + + [Daniel Li](mailto:68623003+danhli@users.noreply.github.com) - Fri, 23 Aug 2024 11:59:12 -0700 + + + Fix visibility timeout errors (#4812) + Signed-off-by: Daniel Li <lhouqua@amazon.com> + +* __Change version in DataPrepper Version class to 2.10 (#4852)__ + + [Krishna Kondaka](mailto:41027584+kkondaka@users.noreply.github.com) - Fri, 23 Aug 2024 11:35:50 -0700 + + + * dplive1.yaml + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Delete .github/workflows/static.yml + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Change Data Prepper Version to 2.10 + Signed-off-by: Kondaka <krishkdk@amazon.com> + + --------- + Signed-off-by: Kondaka <krishkdk@amazon.com> + +* __Adds integration tests for pipeline connectors. (#4834)__ + + [David Venable](mailto:dlv@amazon.com) - Fri, 23 Aug 2024 07:58:01 -0700 + + + This commit adds integration testing for the pipeline connector sink/source + which connects two pipelines. There are two tests. The first tests against a + single connection with a single sink. The second test also includes a second + sink to verify that pipeline connections work with additional sinks. + This commit also includes fixes for CoreHttpServerIT. When running the new + pipeline connector tests, the CoreHttpServerIT tests started failing. I found + some places where shutdowns were not occurring and fixed those. And I added + some additional logging to help debug. The root problem turned out to be that + the ExecutorService used in the DataPrepperServer was a static field. The + CoreHttpServerIT was working because it was the first test that JUnit chose. + With the new tests, it is being chosen later and by that point, the static + ExecutorService was shutdown. The fix is simply to avoid using a static + ExecutorService. + Signed-off-by: David Venable <dlv@amazon.com> + +* __Mask s3 object key in logs (#4861)__ + + [Hai Yan](mailto:8153134+oeyh@users.noreply.github.com) - Thu, 22 Aug 2024 17:12:30 -0500 + + + Signed-off-by: Hai Yan <oeyh@amazon.com> + +* __Changelog for release 2.9 (#4855)__ + + [Krishna Kondaka](mailto:41027584+kkondaka@users.noreply.github.com) - Thu, 22 Aug 2024 12:58:22 -0700 + + + Signed-off-by: Krishna Kondaka + <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + Co-authored-by: + Krishna Kondaka <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> + +* __ENH: collect plugin config and loading errors during data prepper launch (#4816)__ + + [Qi Chen](mailto:qchea@amazon.com) - Wed, 21 Aug 2024 17:41:09 -0500 + + + * ENH: collect plugin errors within core application context + Signed-off-by: George Chen <qchea@amazon.com> + +* __ENH: respect json order and class description on processors (#4857)__ + + [Qi Chen](mailto:qchea@amazon.com) - Wed, 21 Aug 2024 14:32:05 -0500 + + + * ENH: json order and class description on processors + Signed-off-by: George Chen <qchea@amazon.com> + +* __Address missing processor JsonPropertyDescriptions and validations (#4837)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Wed, 21 Aug 2024 10:03:27 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __Catch error that could cause LeaderScheduler thread to crash (#4850)__ + + [Taylor Gray](mailto:tylgry@amazon.com) - Tue, 20 Aug 2024 19:43:10 -0500 + + + Signed-off-by: Taylor Gray <tylgry@amazon.com> + +* __Change main branch version to 2.10-SNAPSHOT (#4851)__ + + [Krishna Kondaka](mailto:41027584+kkondaka@users.noreply.github.com) - Tue, 20 Aug 2024 13:46:09 -0700 + + + Change main branch version to 2.10-SNAPSHOT + Signed-off-by: Kondaka <krishkdk@amazon.com> + + --------- + Signed-off-by: Kondaka <krishkdk@amazon.com> + +* __Add support for AWS security lake sink as a bucket selector mode in S3 sink (#4846)__ + + [Krishna Kondaka](mailto:41027584+kkondaka@users.noreply.github.com) - Tue, 20 Aug 2024 13:19:42 -0700 + + + * dplive1.yaml + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Delete .github/workflows/static.yml + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Add support for AWS security lake sink as a bucket selector mode in S3 sink + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Fixed tests + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Added javadoc for S3BucketSelector + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Added new tests for KeyGenerator + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Added new tests and fixed style errors + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Addressed review comments + Signed-off-by: Kondaka <krishkdk@amazon.com> + + * Fixed test build failure + Signed-off-by: Kondaka <krishkdk@amazon.com> + + --------- + Signed-off-by: Kondaka <krishkdk@amazon.com> + + diff --git a/release/release-notes/data-prepper.release-notes-2.10.0.md b/release/release-notes/data-prepper.release-notes-2.10.0.md new file mode 100644 index 0000000000..e2ba54b01c --- /dev/null +++ b/release/release-notes/data-prepper.release-notes-2.10.0.md @@ -0,0 +1,40 @@ +## 2024-10-15 Version 2.10.0 + +--- + +### Breaking Changes + +### Features + +* Kafka source: support SASL/SCRAM mechanisms ([#4241](https://github.com/opensearch-project/data-prepper/issues/4241)) +* OpenSearch Bulk API Source ([#248](https://github.com/opensearch-project/data-prepper/issues/248)) +* Support AWS Kinesis Data Streams as a Source ([#1082](https://github.com/opensearch-project/data-prepper/issues/1082)) +* Support OpenTelemetry logs in S3 source ([#5028](https://github.com/opensearch-project/data-prepper/issues/5028)) + +### Enhancements + +* Use HTML in JsonPropertyDescription instead of Markdown ([#4984](https://github.com/opensearch-project/data-prepper/issues/4984)) +* Variable drain time when shutting down via shutdown API ([#4966](https://github.com/opensearch-project/data-prepper/issues/4966)) +* Make max connections and acquire timeout configurable on S3 sink client ([#4949](https://github.com/opensearch-project/data-prepper/issues/4949)) +* Support BigDecimal data type in expressions ([#4817](https://github.com/opensearch-project/data-prepper/issues/4817)) +* Caching implementation of EventKeyFactory ([#4843](https://github.com/opensearch-project/data-prepper/pull/4843)) +* Json codec changes with specific json input codec config ([#5054](https://github.com/opensearch-project/data-prepper/pull/5054)) + +### Bug Fixes + +* [BUG] Close Opensearch RestHighLevelClient in OpenSearchClientRefresher on shutdown and initialization failure ([#4770](https://github.com/opensearch-project/data-prepper/issues/4770)) + +### Security + +* CVE-2024-6345 (High) detected in setuptools-68.0.0-py3-none-any.whl ([#4940](https://github.com/opensearch-project/data-prepper/issues/4940)) +* CVE-2023-46136 (High) detected in Werkzeug-2.2.3-py3-none-any.whl ([#4938](https://github.com/opensearch-project/data-prepper/issues/4938)) +* CVE-2024-34069 (High) detected in Werkzeug-2.2.3-py3-none-any.whl ([#4938](https://github.com/opensearch-project/data-prepper/issues/4938)) +* CVE-2024-37891 (Medium) detected in urllib3-2.0.7-py3-none-any.whl ([#4937](https://github.com/opensearch-project/data-prepper/issues/4937)) +* CVE-2024-35195 (Medium) detected in requests-2.31.0-py3-none-any.whl ([#4939](https://github.com/opensearch-project/data-prepper/issues/4939)) +* CVE-2024-5569 (Low) detected in zipp-3.15.0-py3-none-any.whl ([#4936]https://github.com/opensearch-project/data-prepper/issues/4936)) + +### Maintenance + +* Fixes and improvements for AbstractSinkTest ([#5021](https://github.com/opensearch-project/data-prepper/pull/5021)) +* Update the test logging to include the failed assertion ([#4987](https://github.com/opensearch-project/data-prepper/pull/4987)) + diff --git a/release/release-notes/data-prepper.release-notes-2.10.1.md b/release/release-notes/data-prepper.release-notes-2.10.1.md new file mode 100644 index 0000000000..8d4ca73eb7 --- /dev/null +++ b/release/release-notes/data-prepper.release-notes-2.10.1.md @@ -0,0 +1,6 @@ +## 2024-10-21 Version 2.10.1 + +--- + +### Bug Fixes +* [BUG] Kinesis source is failing on startup ([#5084](https://github.com/opensearch-project/data-prepper/issues/5084)) \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 97742e8576..0acecb8122 100644 --- a/settings.gradle +++ b/settings.gradle @@ -54,7 +54,7 @@ dependencyResolutionManagement { library('bouncycastle-bcpkix', 'org.bouncycastle', 'bcpkix-jdk18on').versionRef('bouncycastle') version('guava', '32.1.2-jre') library('guava-core', 'com.google.guava', 'guava').versionRef('guava') - version('reflections', '0.9.12') + version('reflections', '0.10.2') library('reflections-core', 'org.reflections', 'reflections').versionRef('reflections') library('commons-lang3', 'org.apache.commons', 'commons-lang3').version('3.14.0') library('commons-io', 'commons-io', 'commons-io').version('2.15.1') @@ -109,6 +109,7 @@ include 'data-prepper-plugins:common' include 'data-prepper-plugins:armeria-common' include 'data-prepper-plugins:anomaly-detector-processor' include 'data-prepper-plugins:opensearch' +include 'data-prepper-plugins:ocsf' include 'data-prepper-plugins:service-map-stateful' include 'data-prepper-plugins:mapdb-processor-state' include 'data-prepper-plugins:otel-proto-common' @@ -183,4 +184,5 @@ include 'data-prepper-plugins:http-common' include 'data-prepper-plugins:aws-lambda' //include 'data-prepper-plugins:dummy-plugin' include 'data-prepper-plugin-schema' - +include 'data-prepper-plugins:kinesis-source' +include 'data-prepper-plugins:opensearch-api-source' diff --git a/testing/aws-testing-cdk/bin/aws-testing-cdk.ts b/testing/aws-testing-cdk/bin/aws-testing-cdk.ts index fcdd4914ae..756b61a01f 100644 --- a/testing/aws-testing-cdk/bin/aws-testing-cdk.ts +++ b/testing/aws-testing-cdk/bin/aws-testing-cdk.ts @@ -5,6 +5,7 @@ import {GitHubAccessStack} from '../lib/common/GitHubAccessStack'; import {SecretsManagerStack} from '../lib/aws-secrets-manager/SecretsManagerStack'; import {KmsStack} from '../lib/common/KmsStack'; import {S3SinkStack} from '../lib/s3/S3SinkStack'; +import { KinesisSourceStack } from '../lib/kinesis/KinesisSourceStack'; const app = new cdk.App(); @@ -21,3 +22,7 @@ new SecretsManagerStack(app, 'SecretsManagerStack', { new S3SinkStack(app, 'S3SinkStack', { testingRole: githubStack.gitHubActionsTestingRole }); + +new KinesisSourceStack(app, 'KinesisSourceStack', { + testingRole: githubStack.gitHubActionsTestingRole +}); \ No newline at end of file diff --git a/testing/aws-testing-cdk/lib/kinesis/KinesisSourceStack.ts b/testing/aws-testing-cdk/lib/kinesis/KinesisSourceStack.ts new file mode 100644 index 0000000000..3007737ce6 --- /dev/null +++ b/testing/aws-testing-cdk/lib/kinesis/KinesisSourceStack.ts @@ -0,0 +1,79 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import {Stack, StackProps} from 'aws-cdk-lib'; +import {Construct} from 'constructs'; +import {Effect, Role, PolicyDocument, PolicyStatement, Policy} from 'aws-cdk-lib/aws-iam'; + +export interface KinesisSourceStackProps extends StackProps { + readonly testingRole: Role; +} + +/** + * CDK stack that creates a Kinesis stream + */ +export class KinesisSourceStack extends Stack { + + constructor(scope: Construct, id: string, props: KinesisSourceStackProps) { + super(scope, id, props); + + const kinesisPolicyDocument: PolicyDocument = new PolicyDocument({ + statements: [ + new PolicyStatement({ + actions: [ + 'kinesis:ListStreams', + 'kinesis:ListStreamConsumers', + 'kinesis:ListShards', + 'kinesis:DescribeStream', + 'kinesis:GetRecords', + 'kinesis:GetResourcePolicy', + 'kinesis:SubscribeToShard', + 'kinesis:RegisterStreamConsumer', + 'kinesis:CreateStream', + 'kinesis:DeleteStream', + 'kinesis:PutRecord', + 'kinesis:PutRecords' + ], + effect: Effect.ALLOW, + resources: ['*'], + }), + ], + }); + + const kinesisPolicy: Policy = new Policy(this, 'KinesisPolicy', { + document: kinesisPolicyDocument + }); + + const dynamodbPolicyDocument: PolicyDocument = new PolicyDocument({ + statements: [ + new PolicyStatement({ + actions: [ + 'dynamodb:DescribeTimeToLive', + 'dynamodb:CreateTable', + 'dynamodb:DescribeTable', + 'dynamodb:GetItem', + 'dynamodb:PutItem', + 'dynamodb:UpdateItem', + 'dynamodb:Scan', + 'dynamodb:Query', + 'dynamodb:DeleteItem', + 'dynamodb:updateContinuousBackups' + ], + effect: Effect.ALLOW, + resources: ['*'], + }), + ], + }); + + const dynamodbPolicy: Policy = new Policy(this, 'DynamoDbPolicy', { + document: dynamodbPolicyDocument + }); + + props.testingRole.attachInlinePolicy(kinesisPolicy); + props.testingRole.attachInlinePolicy(dynamodbPolicy); + + } +} +