diff --git a/CHANGELOG.md b/CHANGELOG.md index 604cb4315ff..a0e12e1274a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ For Helidon 1.x releases please see [Helidon 1.x CHANGELOG.md](https://github.co ## [2.2.1-SNAPSHOT] -2.2.1 is a bugfix release of Helidon. +2.2.1 is a bugfix release of Helidon. It contains bug fixes, performance fixes and dependency upgrades. ### Compatibility @@ -17,6 +17,33 @@ For Helidon 1.x releases please see [Helidon 1.x CHANGELOG.md](https://github.co ### CHANGES +- Config: Fix issue with null value in JSON. [2723](https://github.com/oracle/helidon/pull/2723) +- Config: Fix null array values in HOCON/JSON config parser. [2731](https://github.com/oracle/helidon/pull/2731) +- Dependencies: Re-organize dependencyManagement [2646](https://github.com/oracle/helidon/pull/2646) +- Dependencies: Update Jackson to 2.12.1 [2690](https://github.com/oracle/helidon/pull/2690) +- Dependencies: Upgrade Netty to 4.1.58 [2678](https://github.com/oracle/helidon/pull/2678) +- Dependencies: Upgrade Weld [2668](https://github.com/oracle/helidon/pull/2668) +- Dependencies: Upgrade grpc to v1.35.0 [2713](https://github.com/oracle/helidon/pull/2713) +- Dependencies: Upgrade to Jersey 2.33 and set of client property [2727](https://github.com/oracle/helidon/pull/2727) +- Dependencies: Upgrades OCI SDK to version 1.31.0 [2699](https://github.com/oracle/helidon/pull/2699) +- Examples: Fix TODO application: [2708](https://github.com/oracle/helidon/pull/2708) +- Examples: Fix WebServer Basics example [2634](https://github.com/oracle/helidon/pull/2634) +- Examples: Fixed different output in DbClient SE archetype [2703](https://github.com/oracle/helidon/pull/2703) +- Examples: PokemonService template fixed in SE Database Archetype. [2701](https://github.com/oracle/helidon/pull/2701) +- Jersey: Allow override of Jersey property via config [2737](https://github.com/oracle/helidon/pull/2737) +- K8s: Update k8s descriptors to avoid using deprecated APIs [2719](https://github.com/oracle/helidon/pull/2719) +- Micronaut extensions: micronaut data with ucp [2572](https://github.com/oracle/helidon/pull/2572) +- Performance: New implementation of LazyValue [2738](https://github.com/oracle/helidon/pull/2738) +- Performance: Properly release underlying buffer before passing it to WebSocket handler [2715](https://github.com/oracle/helidon/pull/2715) +- Performance: improvements to queue(s) management in Webserver [2704](https://github.com/oracle/helidon/pull/2704) +- Reactive: Concat array enhancement [2508](https://github.com/oracle/helidon/pull/2508) +- Rest Client: Rest client async header propagation with usage of Helidon Context [2735](https://github.com/oracle/helidon/pull/2735) +- Security: Added overall timeout to evictable cache [2659](https://github.com/oracle/helidon/pull/2659) +- Testing: Proves that environment variable overrides work with our MicroProfile Config implementation [2648](https://github.com/oracle/helidon/pull/2648) +- Testing: Separate execution of DataChunkReleaseTest in its own VM [2716](https://github.com/oracle/helidon/pull/2716) +- WebServer: Lays the groundwork for permitting other Netty transports [2478](https://github.com/oracle/helidon/pull/2478) +- Build: Manage versions of version plugin and helidon-maven-plugin [2626](https://github.com/oracle/helidon/pull/2626) + ## [2.2.0] 2.2.0 is a minor release of Helidon. It contains bug fixes and enhancements. Notable enhancements: diff --git a/THIRD_PARTY_LICENSES.txt b/THIRD_PARTY_LICENSES.txt index 7e6a67f575d..3196d35b474 100644 --- a/THIRD_PARTY_LICENSES.txt +++ b/THIRD_PARTY_LICENSES.txt @@ -545,7 +545,7 @@ Copyright 2004-present by the Checker Framework developers The MIT License SPDX short identifier: MIT -Further resources on the MIT License Copyright +Further resources on the MIT License Copyright 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 @@ -645,6 +645,8 @@ commons-codec:commons-codec Copyright (c) Tatu Saloranta, tatu.saloranta@iki.fi Apache License Version 2 -------------------------------------------- + + =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Guava 30.0 Google Apache 2.0 @@ -792,7 +794,6 @@ failureaccess, v1.0.1, Apache 2.0 +++++++++++++++++ - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= H2 1.4.199 h2database.com Multiple Licenses @@ -1076,7 +1077,7 @@ HttpComponents HttpClient 4.5.13 Apache Apache 2.0 Used by: [helidon-security-providers-google-login] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -HttpComponents HttpClient +Apache HttpComponents HttpClient Notice file: Apache HttpComponents Client Copyright 1999-2020 The Apache Software Foundation @@ -1090,10 +1091,10 @@ License Identifier: Apache-2.0 ========================================================================= This project includes Public Suffix List copied from - +https://publicsuffix.org/list/effective_tld_names.dat licensed under the terms of the Mozilla Public License, v. 2.0 -Full license text: +Full license text: http://mozilla.org/MPL/2.0/ License Identifier: MPL-2.0 @@ -1139,7 +1140,7 @@ From the Notice File: 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. + Copyright (c) 2008 Alexander Beider and Stephen P. Morse. License File: Apache License Version 2.0 @@ -4485,6 +4486,7 @@ Fourth Party Dependencies Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. Copyright (c) OSGi Alliance (2013). All Rights Reserved. ------------------------------------------- + =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= MicroProfile GraphQL API 1.0.3 Eclipse Foundation Apache 2.0 @@ -5513,7 +5515,6 @@ 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 Tyrus 1.17 Oracle Eclipse Public License 2.0 + GPL v.2 with CPE @@ -5744,7 +5745,6 @@ Copyright 2010 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= SmallRye OpenAPI 1.2.0 Red Hat, Inc. Apache 2.0 @@ -5806,6 +5806,7 @@ SnakeYAML 1.27 SnakeYAML.org Apache 2.0 Used by: [helidon-config-yaml, helidon-openapi] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +SnakeYaml 1.27 Copyright (c) 2008, http://www.snakeyaml.org Licensed under the Apache License, Version 2.0 (the "License"); @@ -5899,7 +5900,7 @@ possession, or use, and re-export of encryption software, to see if this is permitted. -------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -Weld SE (Core) 3.1.4.Final Red Hat, Inc. +Weld SE (Core) 3.1.6.Final Red Hat, Inc. Apache 2.0 Used by: [helidon-integrations-cdi-jta-weld, weld-se-core] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -6431,10 +6432,10 @@ 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. - - + + =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -grpc-java 1.32.1 The gRPC Authors +grpc-java 1.35.0 The gRPC Authors Apache 2.0 Used by: [helidon-config-etcd, helidon-grpc-core, io.grpc] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -6460,10 +6461,7 @@ HTTP & SPDY client for Android and Java applications, which can be obtained at: * LICENSE: - * Apache License 2.0 - * Copyright (C) 2014 Square, Inc. - * Copyright (C) 2012 Square, Inc. - * Copyright (C) 2012 The Android Open Source Project + * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) * HOMEPAGE: * https://github.com/square/okhttp * LOCATION_IN_GRPC: @@ -6474,29 +6472,50 @@ cloud-native high-performance edge/middle/service proxy, which can be obtained at: * LICENSE: - * Apache License 2.0 - * Copyright 2016-2019 Envoy Project Authors + * xds/third_party/envoy/LICENSE (Apache License 2.0) + * NOTICE: + * xds/third_party/envoy/NOTICE + Envoy + Copyright 2016-2019 Envoy Project Authors + Licensed under Apache License 2.0. See LICENSE for terms. * HOMEPAGE: * https://www.envoyproxy.io * LOCATION_IN_GRPC: * xds/third_party/envoy +This product contains a modified portion of 'protoc-gen-validate (PGV)', +an open source protoc plugin to generate polyglot message validators, +which can be obtained at: + + * LICENSE: + * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) + * NOTICE: + * xds/third_party/protoc-gen-validate/NOTICE + protoc-gen-validate + Copyright 2019 Envoy Project Authors + Licensed under Apache License 2.0. See LICENSE for terms. + * HOMEPAGE: + * https://github.com/envoyproxy/protoc-gen-validate + * LOCATION_IN_GRPC: + * xds/third_party/protoc-gen-validate + This product contains a modified portion of 'udpa', an open source universal data plane API, which can be obtained at: * LICENSE: - * Apache License 2.0 + * xds/third_party/udpa/LICENSE (Apache License 2.0) * HOMEPAGE: * https://github.com/cncf/udpa * LOCATION_IN_GRPC: * xds/third_party/udpa + -------------------------------------------- License Identifier: Apache-2.0 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- "perfmark:perfmark-api" (io.perfmark:perfmark-api) - Copyright 2019 Google LLC + Copyright 2019,2020 Google LLC Apache License Version 2.0 -------------------------------------------- "Gson" (com.google.code.gson:gson) @@ -6526,14 +6545,9 @@ Fourth Party Dependencies Copyright 2012 Google Inc. All Rights Reserved. Apache License Version 2.0 -------------------------------------------- -"OpenCensus" (io.opencensus:opencensus-*) - Copyright 2017,2019 OpenCensus Authors - Copyright 2016- 17, OpenCensus Authors - Copyright 2017, OpenCensus Authors - Apache License Version 2.0 --------------------------------------------- "Netty" (io.netty:netty-*) - Copyright 2014,2020 The Netty Project + Copyright 2011,2020 The Netty Project + Copyright 2014,2019 The Netty Project Copyright 2014 Twitter, Inc. Copyright (c) 2004-2011 QOS.ch Copyright 2012,2017 The Netty Project @@ -6543,7 +6557,7 @@ Fourth Party Dependencies Apache License Version 2.0 -------------------------------------------- "proto-google-common-protos" (com.google.api.grpc:proto-google-common-protos) - Copyright 2014, Google Inc. All rights reserved. + Copyright 2020 Google LLC Apache License Version 2.0 -------------------------------------------- "Checker Qual" (org.checkerframework:checker-compat-qual) @@ -6627,23 +6641,56 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jackson-databind 2.11.1 FasterXML, LLC +jackson-databind 2.12.1 FasterXML, LLC Apache 2.0 Used by: [helidon-media-jackson, helidon-security-providers-google-login] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= TOP LEVEL COMPONENT NAMES: com.fasterxml.jackson.core:jackson-databind -Copyright © 2008–2019 FasterXML. All rights reserved. +Copyright © 2008–2012 FasterXML. All rights reserved. ---------------------------------------------------------------------- + +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 derivate works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 + +NOTICE FILE: +=============== +# 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, as well as supported +commercially by FasterXML.com. + +## Licensing + +Jackson core and extension components may be licensed under different licenses. +To find the details that apply to this artifact see the accompanying LICENSE file. +For more information, including possible other licensing options, contact +FasterXML.com (http://fasterxml.com). + +## 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. +=============== License Identifier: Apache-2.0 ====================End of Apache License 2.0 of top level component====================== FOURTH-PARTY DEPENDENCY -----------------jackson-core 2.11.0 ----------------------- +----------------jackson-core ----------------------- COPYRIGHT: Copyright (c) 2007-2020 Tatu Saloranta, tatu.saloranta@iki.fi LICENSE: Apache 2.0 ------------------jackson-annotations 2.11.0 ----------------------- +-----------------jackson-annotations ----------------------- COPYRIGHT: Copyright (c) 2007- 2020 Tatu Saloranta, tatu.saloranta@iki.fi LICENSE: Apache 2.0 @@ -6656,7 +6703,7 @@ License URL - http://www.apache.org/licenses/LICENSE-2.0 License Identifier: Apache-2.0 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jersey-client 2.32 Eclipse Foundation +jersey-core-client 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE Used by: [helidon-jersey-client, helidon-jersey-connector] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -6671,67 +6718,68 @@ https://github.com/eclipse-ee4j/jersey (The EPL license is reproduced below). 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. _________________________________________________________________ -Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. -Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. -Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. +jersey-core-client (org.glassfish.jersey.core:jersey-client) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +# 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 -------------------------------------------- -License Identifier: EPL-2.0 --------------------------------------------------------------------------- Fourth Party Dependencies -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) -Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. -Copyright (c) 2006 Google Inc. -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2006 Google Inc. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) -Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. -Copyright (c) 2018 Payara Foundation and/or its affiliates. -Copyright (C) 2006,2014 The Guava Authors -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2018 Payara Foundation and/or its affiliates. + Copyright (C) 2006,2014 The Guava Authors + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) -Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. -Copyright © 2019 Eclipse Foundation. All rights reserved.
-EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. + Copyright © 2019 Eclipse Foundation. All rights reserved.
+ Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) -Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) -Copyright (C) 2009 The JSR-330 Expert Group -Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) -Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. -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. + Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- - + =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jersey-hk2 2.32 GlassFish +jersey-inject-hk2 2.33 GlassFish Eclipse Public License 2.0 + GPL v.2 with CPE Used by: [helidon-integrations-cdi-oci-objectstorage, helidon-jersey-client, helidon-jersey-connector, helidon-jersey-server] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -6746,17 +6794,16 @@ Used by: [helidon-integrations-cdi-oci-objectstorage, helidon-jersey-client, hel 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. ____________________________________________________ - -Copyright (c) 2017,2019 Oracle and/or its affiliates. All rights reserved. +jersey-inject-hk2 (org.glassfish.jersey.inject:jersey-hk2) + Copyright (c) 2017,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- # Notice for Jersey - This content is produced and maintained by the Eclipse Jersey project. -* Project home: https://projects.eclipse.org/projects/ee4j.jersey +* Project home: https://projects.eclipse.org/projects/ee4j.jersey ## Trademarks - Eclipse Jersey is a trademark of the Eclipse Foundation. ## Copyright @@ -6778,96 +6825,62 @@ 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 -------------------------------------------- -License Identifier: EPL-2.0 --------------------------------------------- Fourth Party Dependencies -------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright © 2019 Eclipse Foundation. All rights reserved.
- EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) - Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "ServiceLocator Default Implementation" (org.glassfish.hk2:hk2-locator) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2019 Payara Service Ltd. and/or its affiliates. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "aopalliance version 1.0 repackaged as a module" (org.glassfish.hk2.external:aopalliance-repackaged) Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) + Copyright (C) 2009 The JSR-330 Expert Group + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"HK2 API module" org.glassfish.hk2:hk2-api) +"HK2 API module" (org.glassfish.hk2:hk2-api) Copyright (c) 2007,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "HK2 Implementation Utilities" (org.glassfish.hk2:hk2-utils) Copyright (c) 2007,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. - -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. - + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Javassist" (org.javassist:javassist) - Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.]]> + Copyright (C) 1999-2020 by Shigeru Chiba, All rights reserved. Copyright (C) 2004 Bill Burke. All Rights Reserved. -License Identifier: Apache-2.0 + Apache License 2.0 -------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jersey-media-json-binding 2.32 Eclipse Foundation +jersey-media-json-binding 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE Used by: [helidon-microprofile] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -6882,9 +6895,36 @@ Used by: [helidon-microprofile] 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. _________________________________________________ +# Notice for Jersey +This content is produced and maintained by the Eclipse Jersey project. -Copyright (c) 2017,2019 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 +* 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 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- @@ -6892,39 +6932,46 @@ Fourth Party Dependencies Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright © 2019 Eclipse Foundation. All rights reserved.
- EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) - Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) - Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Jakarta JSON Processing API (JSON-P) (jakarta.json:jakarta.json-api) + Copyright 2019 Eclipse Foundation. All rights reserved. + Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "JSON-P Default Provider" (org.glassfish:jakarta.json) -"JSON-P API" (jakarta.json:jakarta.json-api) Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "JSON-B API" (jakarta.json.bind:jakarta.json.bind-api) Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. Copyright © 2019 Eclipse Foundation. All Rights Reserved.
- EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. +"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) + Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"org.glassfish.hk2.external:jakarta.inject" + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"org.eclipse.yasson" (org.eclipse:yasson) + Copyright (c) 2019 IBM and/or its affiliates. All rights reserved. + Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2019 Payara Services and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 or Eclipse Distribution License 1.0 Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. @@ -6952,15 +6999,8 @@ 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.eclipse.yasson" (org.eclipse:yasson) - Copyright (c) 2019 IBM and/or its affiliates. All rights reserved. - Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. - Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2019 Payara Services and/or its affiliates. All rights reserved. - Eclipse Public License v. 2.0, Eclipse Distribution License v. 1.0 --------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jersey-media-json-processing 2.32 Eclipse Foundation +jersey-media-json-processing 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE Used by: [helidon-jersey-media-jsonp] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -6975,9 +7015,40 @@ Used by: [helidon-jersey-media-jsonp] 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. ____________________________________________ +jersey-media-json-processing (org.glassfish.jersey.media:jersey-media-json-processing) + Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +# Notice for Jersey +This content is produced and maintained by the Eclipse Jersey project. -Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 +* 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 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- @@ -6985,67 +7056,42 @@ Fourth Party Dependencies Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright © 2019 Eclipse Foundation. All rights reserved.
- EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) Copyright (C) 2009 The JSR-330 Expert Group Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "JSON-P Default Provider" (org.glassfish:jakarta.json) Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta JSON Processing Media for Jakarta RESTful Web Services" (org.glassfish:jsonp-jaxrs) Copyright (c) 2012,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. - -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. +"JSON-P Default Provider" (org.glassfish:jakarta.json) + Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jersey-mp-rest-client 2.32 Eclipse Foundation +jersey-mp-rest-client 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE Used by: [helidon-jersey-client, helidon-jersey-connector, helidon-microprofile-rest-client] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -7060,10 +7106,40 @@ Used by: [helidon-jersey-client, helidon-jersey-connector, helidon-microprofile- 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. ___________________________________________________ +jersey-mp-rest-client (org.glassfish.jersey.ext.microprofile:jersey-mp-rest-client) + Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2019,2020 Oracle and/or its affiliates. All rights reserved. +-------------------------------------------- +# Notice for Jersey +This content is produced and maintained by the Eclipse Jersey project. -Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. -Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 +* 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 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- @@ -7101,7 +7177,7 @@ org.glassfish.jersey.media:jersey-media-jaxb Copyright (c) 2007,2019 Oracle and/or its affiliates. All rights reserved. EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -------------------------------------------- - "aopalliance version repackaged as a module" (org.glassfish.hk2.external:aopalliance-repackaged) + "aopalliance version repackaged as a module" (org.glassfish.hk2.external:aopalliance-repackaged) Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -------------------------------------------- @@ -7114,10 +7190,6 @@ org.glassfish.jersey.media:jersey-media-jaxb Copyright (c) 2012,2019 Oracle and/or its affiliates. All rights reserved. EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -------------------------------------------- -"org.osgi:org.osgi.annotation.versioning" (org.osgi:org.osgi.annotation.versioning) - Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. - Copyright (c) OSGi Alliance (2013). All Rights Reserved. --------------------------------------------- "Jakarta Interceptors" (jakarta.interceptor:jakarta.interceptor-api) Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. Copyright 2019 Eclipse Foundation. All rights reserved.
@@ -7140,19 +7212,16 @@ Jakarta Expression Language API (EL) (jakarta.el:jakarta.el-api) -------------------------------------------- "MicroProfile Rest Client API" (org.eclipse.microprofile.rest.client:microprofile-rest-client-api) Copyright (c) 2016-2019 Contributors to the Eclipse Foundation - Apache License 2.0 + Apache License Version 2.0 +-------------------------------------------- +"org.osgi:org.osgi.annotation.versioning" (org.osgi:org.osgi.annotation.versioning) + Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. + Copyright (c) OSGi Alliance (2013). All Rights Reserved. + Apache License Version 2.0 -------------------------------------------- MicroProfile Config (microprofile-config-api) Copyright (c) 2016-2020 Contributors to the Eclipse Foundation Apache License Version 2.0 - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). - - Portions of this software were originally based on the following: - Apache DeltaSpike Config - https://deltaspike.apache.org - under Apache License, v2.0 - This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -7166,7 +7235,7 @@ PackageName: Eclipse Microprofile PackageHomePage: http://www.eclipse.org/microprofile PackageLicenseDeclared: Apache-2.0 -PackageCopyrightText: +PackageCopyrightText: Mark Struberg struberg@apache.org, Gerhard Petracek gpetracek@apache.org, Romain Manni-Bucau rmannibucau@apache.org, @@ -7185,12 +7254,6 @@ License Identifier: Apache-2.0 "Jakarta Bean Validation API" (jakarta.validation:jakarta.validation-api) Copyright © 2019 Eclipse Foundation.
Apache License Version 2.0 - -Test dependencies: - - * [TestNG](https://github.com/cbeust/testng) - Apache License 2.0 - * [JCommander](https://github.com/cbeust/jcommander) - Apache License 2.0 - * [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/src) - Apache License 2.0 -------------------------------------------- Jakarta Contexts and Dependency Injection API (CDI API) (jakarta.enterprise:jakarta.enterprise.cdi-api) Copyright 2010, 2016, Red Hat, Inc., and individual contributors @@ -7198,7 +7261,6 @@ Jakarta Contexts and Dependency Injection API (CDI API) (jakarta.enterprise:jaka Copyright 2019 Eclipse Foundation. Copyright 2010,2013 2015, Red Hat, Inc., and individual contributors Apache License Version 2.0 - -------------------------------------------- "Jakarta XML Binding API" (jakarta.xml.bind:jakarta.xml.bind-api) Copyright (c) 2003,2020 Oracle and/or its affiliates. All rights reserved. @@ -7257,9 +7319,8 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright (C) 2004 Bill Burke. All Rights Reserved. Apache License 2.0 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jersey-server 2.32 Eclipse Foundation +jersey-core-server 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE Used by: [helidon-jersey-server] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -7274,21 +7335,18 @@ Used by: [helidon-jersey-server] 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. _________________________________________________ - - Copyright (c) 2000-2011 INRIA, France Telecom +jersey-core-server (org.glassfish.jersey.core:jersey-server) + Copyright (c) 2000-2011 INRIA, France Telecom Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. Copyright 2010,2013 Coda Hale and Yammer, Inc. - Copyright (c) 2000-2011 INRIA, France Telecom -------------------------------------------- # Notice for Jersey - This content is produced and maintained by the Eclipse Jersey project. -* Project home: https://projects.eclipse.org/projects/ee4j.jersey +* Project home: https://projects.eclipse.org/projects/ee4j.jersey ## Trademarks - Eclipse Jersey is a trademark of the Eclipse Foundation. ## Copyright @@ -7310,103 +7368,78 @@ 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 -------------------------------------------- -License Identifier: EPL-2.0 --------------------------------------------- Fourth Party Dependencies -------------------------------------------- +"jersey-core-client" (org.glassfish.jersey.core:jersey-client) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"jersey-core-client" (org.glassfish.jersey.core:jersey-client) - Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"jersey-media-jaxb" (org.glassfish.jersey.media:jersey-media-jaxb) - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright © 2019 Eclipse Foundation. All rights reserved.
- EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. - -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. - --------------------------------------------- -"Jakarta XML Binding API" (jakarta.xml.bind:jakarta.xml.bind-api) - Copyright (c) 2003,2020 Oracle and/or its affiliates. All rights reserved. - Copyright © 2019, 2020 Eclipse Foundation. All rights reserved.
- Eclipse Distribution License - v 1.0 --------------------------------------------- -"Jakarta Activation API jar" (jakarta.activation:jakarta.activation-api) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - Eclipse Distribution License - v 1.0 + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Bean Validation API" (jakarta.validation:jakarta.validation-api) Copyright © 2019 Eclipse Foundation.
- Apache License Version 2.0 - -# Notices for Eclipse Jakarta Bean Validation - -This content is produced and maintained by the Eclipse Jakarta Bean Validation -project. + Apache License 2.0 + This program and the accompanying materials are made available under the terms + of the Apache License, Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0. +-------------------------------------------- +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +jersey-ext-weld2-se 2.33 Eclipse Foundation +Eclipse Public License 2.0 + GPL v.2 with CPE +Used by: [helidon-microprofile-server] +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +1. The follow files are available in source code form under the Eclipse Public License at: + https://github.com/eclipse-ee4j/jersey (The EPL license is reproduced below). +2. All past Contributors to the Jersey disclaim 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. In addition, such Contributors are not liable + for any damages, including direct, indirect, special, incidental and consequential + damages, such as lost profits. +3. Any provisions of the Oracle license agreement that differ from the Eclipse Public + License are offered by Oracle alone and not by any other party. +______________________________________________________ +jersey-ext-weld2-se (org.glassfish.jersey.ext.cdi:jersey-weld2-se) + Copyright (c) 2014,2020 Oracle and/or its affiliates. All rights reserved. +-------------------------------------------- +# Notice for Jersey +This content is produced and maintained by the Eclipse Jersey project. -* Project home: https://projects.eclipse.org/projects/ee4j.bean-validation +* Project home: https://projects.eclipse.org/projects/ee4j.jersey ## Trademarks - - Jakarta Bean Validation is a trademark of the Eclipse Foundation. +Eclipse Jersey is a trademark of the Eclipse Foundation. ## Copyright @@ -7417,151 +7450,72 @@ source code repository logs. ## Declared Project Licenses This program and the accompanying materials are made available under the terms -of the Apache License, Version 2.0 which is available at -https://www.apache.org/licenses/LICENSE-2.0. +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: Apache-2.0 +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: - * [The specification repository](https://github.com/eclipse-ee4j/beanvalidation-spec) - * [The API repository](https://github.com/eclipse-ee4j/beanvalidation-api) - * [The TCK repository](https://github.com/eclipse-ee4j/beanvalidation-tck) - -## Third-party Content - -This project leverages the following third party content. - -Test dependencies: - - * [TestNG](https://github.com/cbeust/testng) - Apache License 2.0 - * [JCommander](https://github.com/cbeust/jcommander) - Apache License 2.0 - * [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/src) - Apache License 2.0 -License Identifier: Apache-2.0 --------------------------------------------- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jersey-weld2-se 2.32 Eclipse Foundation -Eclipse Public License 2.0 + GPL v.2 with CPE -Used by: [helidon-microprofile-server] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -1. The follow files are available in source code form under the Eclipse Public License at: - https://github.com/eclipse-ee4j/jersey (The EPL license is reproduced below). -2. All past Contributors to the Jersey disclaim 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. In addition, such Contributors are not liable - for any damages, including direct, indirect, special, incidental and consequential - damages, such as lost profits. -3. Any provisions of the Oracle license agreement that differ from the Eclipse Public - License are offered by Oracle alone and not by any other party. -______________________________________________________ - -Copyright (c) 2014,2020 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 --------------------------------------------- -"jersey-ext-cdi1x" (org.glassfish.jersey.ext.cdi:jersey-cdi1x) - Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2013,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +* https://github.com/eclipse-ee4j/jersey -------------------------------------------- -"jersey-core-client" (org.glassfish.jersey.core:jersey-client) - Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +Fourth Party Dependencies -------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"jersey-media-jaxb" (org.glassfish.jersey.media:jersey-media-jaxb) - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +"jersey-core-server" (org.glassfish.jersey.core:jersey-server) + Copyright (c) 2000-2011 INRIA, France Telecom + Copyright (c) 2018 Payara Foundation and/or its affiliates. + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Copyright 2010,2013 Coda Hale and Yammer, Inc. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"jersey-server" (org.glassfish.jersey.core:jersey-server) - Copyright (c) 2000-2011 INRIA, France Telecom - Copyright (c) 2018 Payara Foundation and/or its affiliates. +"jersey-core-client" (org.glassfish.jersey.core:jersey-client) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - Copyright 2010,2013 Coda Hale and Yammer, Inc. - Copyright (c) 2000-2011 INRIA, France Telecom - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"jersey-ext-cdi1x" (org.glassfish.jersey.ext.cdi:jersey-cdi1x) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2013,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"org.glassfish.hk2.external:jakarta.inject" + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) - Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) + "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright © 2019 Eclipse Foundation. All rights reserved.
- EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) - Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"JSON-B API" (jakarta.json.bind:jakarta.json.bind-api) - Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. - Copyright © 2019 Eclipse Foundation. All Rights Reserved.
- EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"Jakarta XML Binding API" (jakarta.xml.bind:jakarta.xml.bind-api) - Copyright (c) 2003,2020 Oracle and/or its affiliates. All rights reserved. - Copyright © 2019, 2020 Eclipse Foundation. All rights reserved.
- Copyright (c) 2018 Payara Foundation and/or its affiliates. - Eclipse Distribution License - v 1.0 --------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - Eclipse Distribution License - v 1.0 -Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. - -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. +"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) + Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Bean Validation API" (jakarta.validation:jakarta.validation-api) Copyright © 2019 Eclipse Foundation.
- Apache License Version 2.0 + Apache License 2.0 + This program and the accompanying materials are made available under the terms + of the Apache License, Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0. License Identifier: Apache-2.0 +-------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= kafka client 2.5.0 The Apache Software Foundation @@ -7653,28 +7607,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -netty 4.1.51 The Netty Project +netty 4.1.58.Final The Netty Project Apache 2.0 Used by: [helidon-webclient, helidon-webserver] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -The Netty Project -netty-4.1.42.Final -Copyright 2012,2019 The Netty Project -Copyright 2011,2018 The Netty Project -Copyright 2014,2017 The Netty Project -Copyright 2012,2017 The Netty Project -Copyright 2012,2016 The Netty Project -Copyright 2014 Twitter, Inc. -Copyright (c) 2011, Joe Walnes and contributors -Copyright (c) 2008-2009 Bjoern Hoehrmann -Copyright (c) 2004-2011 QOS.ch + Copyright 2012,2020 The Netty Project + Copyright 2014 Twitter, Inc. + Copyright (c) 2011, Joe Walnes and contributors + Copyright (c) 2008-2009 Bjoern Hoehrmann + Copyright (c) 2004-2011 QOS.ch +-------------------------------------------- The Netty Project ================= Please visit the Netty web site for more information: - * http://netty.io/ + * https://netty.io/ Copyright 2014 The Netty Project @@ -7682,7 +7631,7 @@ The Netty Project licenses this file to you 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 + 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 @@ -7699,7 +7648,33 @@ This product contains the extensions to Java Collections Framework which has been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene: * LICENSE: - * Public Domain + * license/LICENSE.jsr166y.txt (Public Domain) +The person or persons who have associated work with this document (the +"Dedicator" or "Certifier") hereby either (a) certifies that, to the best of +his knowledge, the work of authorship identified is in the public domain of +the country from which the work is published, or (b) hereby dedicates whatever +copyright the dedicators holds in the work of authorship identified below (the +"Work") to the public domain. A certifier, moreover, dedicates any copyright +interest he may have in the associated work, and for these purposes, is +described as a "dedicator" below. + +A certifier has taken reasonable steps to verify the copyright status of this +work. Certifier recognizes that his good faith efforts may not shield him from +liability if in fact the work certified is not in the public domain. + +Dedicator makes this dedication for the benefit of the public at large and to +the detriment of the Dedicator's heirs and successors. Dedicator intends this +dedication to be an overt act of relinquishment in perpetuity of all present +and future rights under copyright law, whether vested or contingent, in the +Work. Dedicator understands that such relinquishment of all rights includes +the relinquishment of all rights to enforce (by lawsuit or otherwise) those +copyrights in the Work. + +Dedicator recognizes that, once placed in the public domain, the Work may be +freely reproduced, distributed, transmitted, used, modified, built upon, or +otherwise exploited by anyone for any purpose, commercial or non-commercial, +and in any way, including by methods that have not yet been invented or +conceived. * HOMEPAGE: * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/ * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/ @@ -7708,90 +7683,7 @@ This product contains a modified version of Robert Harder's Public Domain Base64 Encoder and Decoder, which can be obtained at: * LICENSE: - * Public Domain - * HOMEPAGE: - * http://iharder.sourceforge.net/current/java/base64/ - -This product contains a modified portion of 'Webbit', an event based -WebSocket and HTTP server, which can be obtained at: - - * COPYRIGHT: - Copyright (c) 2011, Joe Walnes, Aslak Hellesøy and contributors - All rights reserved. - * LICENSE: - * BSD License - * HOMEPAGE: - * https://github.com/joewalnes/webbit - -This product contains a modified portion of 'SLF4J', a simple logging -facade for Java, which can be obtained at: - - * COPYRIGHT: - Copyright (c) 2004-2007 QOS.ch - All rights reserved. - * LICENSE: - * MIT License - * HOMEPAGE: - * http://www.slf4j.org/ - -This product contains a modified portion of 'Apache Harmony', an open source -Java SE, which can be obtained at: - - * COPYRIGHT: - Copyright 2006, 2010 The Apache Software Foundation. - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). - * LICENSE: - * Apache License 2.0 - * HOMEPAGE: - * http://archive.apache.org/dist/harmony/ - -This product contains a modified portion of 'jbzip2', a Java bzip2 compression -and decompression library written by Matthew J. Francis. It can be obtained at: - - * COPYRIGHT: - Copyright (c) 2010-2011 Matthew J. Francis and Contributors of the jbzip2 Project - * LICENSE: - * MIT License - * HOMEPAGE: - * https://code.google.com/p/jbzip2/ - -This product contains a modified portion of 'libdivsufsort', a C API library to construct -the suffix array and the Burrows-Wheeler transformed string for any input string of -a constant-size alphabet written by Yuta Mori. It can be obtained at: - - * COPYRIGHT: - Copyright (c) 2003-2008 Yuta Mori All Rights Reserved. - * LICENSE: - * MIT License - * HOMEPAGE: - * https://github.com/y-256/libdivsufsort - -This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM, - which can be obtained at: - - * LICENSE: - * Apache License 2.0 - * HOMEPAGE: - * https://github.com/JCTools/JCTools - -This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data -interchange format, which can be obtained at: - - * COPYRIGHT: - Copyright 2013 Google Inc. All rights reserved. - Code generated by the Protocol Buffer compiler is owned by the owner - of the input file used when generating it. This code is not - standalone and requires a support library to be linked with it. This - support library is itself covered by the above license. - * LICENSE: - * New BSD License - * HOMEPAGE: - * https://github.com/google/protobuf - --------------------------------------------------------------------------------- -Public Domain - + * license/LICENSE.base64.txt (Public Domain) The person or persons who have associated work with this document (the "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of his knowledge, the work of authorship identified is in the public domain of @@ -7818,9 +7710,18 @@ freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. --------------------------------------------------------------------------------- -BSD License -http://www.opensource.org/licenses/bsd-license + * HOMEPAGE: + * http://iharder.sourceforge.net/current/java/base64/ + +This product contains a modified portion of 'Webbit', an event based +WebSocket and HTTP server, which can be obtained at: + + * LICENSE: + * license/LICENSE.webbit.txt (BSD License) +(BSD License: https://www.opensource.org/licenses/bsd-license) + +Copyright (c) 2011, Joe Walnes, Aslak Hellesøy and contributors +All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the @@ -7854,36 +7755,63 @@ 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. --------------------------------------------------------------------------------- -New BSD License + * HOMEPAGE: + * https://github.com/joewalnes/webbit -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +This product contains a modified portion of 'SLF4J', a simple logging +facade for Java, which can be obtained at: - * 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 Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. + * LICENSE: + * license/LICENSE.slf4j.txt (MIT License) +/* + * Copyright (c) 2004-2007 QOS.ch + * 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. + */ + * HOMEPAGE: + * https://www.slf4j.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 -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. --------------------------------------------------------------------------------- -MIT License +This product contains a modified portion of 'Apache Harmony', an open source +Java SE, which can be obtained at: + + * NOTICE: + * license/NOTICE.harmony.txt +Apache Harmony + +Copyright 2006, 2010 The Apache Software Foundation. + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). + * LICENSE: + * license/LICENSE.harmony.txt (Apache License 2.0) + + * HOMEPAGE: + * https://archive.apache.org/dist/harmony/ + +This product contains a modified portion of 'jbzip2', a Java bzip2 compression +and decompression library written by Matthew J. Francis. It can be obtained at: + + * LICENSE: + * license/LICENSE.jbzip2.txt (MIT License) +Copyright (c) 2010-2011 Matthew J. Francis and Contributors of the jbzip2 Project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -7902,256 +7830,391 @@ 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. --------------------------------------------------------------------------------- -License Identifier: Apache-2.0 --------------------------------------------------------------------------------- + * HOMEPAGE: + * https://code.google.com/p/jbzip2/ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -opentracing-grpc 0.2.1 Opentracing.Io -Apache 2.0 -Used by: [helidon-grpc-client, helidon-grpc-server] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -io.opentracing.contrib:opentracing-grpc (io.opentracing.contrib:opentracing-grpc) - Copyright 2017-2019 The OpenTracing Authors --------------------------------------------- -License Identifier: Apache-2.0 --------------------------------------------- -Fourth Party Dependencies --------------------------------------------- -"OpenTracing API" (io.opentracing:opentracing-api) - Copyright 2016-2019 The OpenTracing Authors - Apache License Version 2.0 --------------------------------------------- -"OpenTracing-util" (io.opentracing:opentracing-util) - Copyright 2016-2019 The OpenTracing Authors - Apache License Version 2.0 --------------------------------------------- -"OpenTracing-noop" (io.opentracing:opentracing-noop) - Copyright 2016-2019 The OpenTracing Authors - Apache License Version 2.0 +This product contains a modified portion of 'libdivsufsort', a C API library to construct +the suffix array and the Burrows-Wheeler transformed string for any input string of +a constant-size alphabet written by Yuta Mori. It can be obtained at: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -opentracing-tracerresolver 0.1.8 opentracing-contrib -Apache 2.0 -Used by: [helidon-tracing-tracer-resolver] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -opentracing-tracerresolver: 0.1.8, Apache 2.0 -Copyright 2017-2019 The OpenTracing Authors --------------------------------------------------------------------------- -4th-party dependencies: -OpenTracing API for Java: 0.33.0, Apache 2.0 (opentracing-api is used in opentracing-tracerresolver) -Copyright 2016-2019 The OpenTracing Authors ---------------------------------------------------------------------------- -License Identifier: Apache-2.0 + * LICENSE: + * license/LICENSE.libdivsufsort.txt (MIT License) +Copyright (c) 2003-2008 Yuta Mori 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: -======================================================================= -Full Text of Referenced Licenses -======================================================================= +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +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. + * HOMEPAGE: + * https://github.com/y-256/libdivsufsort - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM, + which can be obtained at: - 1. Definitions. + * LICENSE: + * license/LICENSE.jctools.txt (ASL2 License) + * HOMEPAGE: + * https://github.com/JCTools/JCTools - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +This product optionally depends on 'JZlib', a re-implementation of zlib in +pure Java, which can be obtained at: - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + * LICENSE: + * license/LICENSE.jzlib.txt (BSD style License) +Copyright (c) 2000,2001,2002,2003,2004 ymnk, JCraft,Inc. 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. + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + 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. - "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. + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. - "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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 JCRAFT, +INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE 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. + * HOMEPAGE: + * http://www.jcraft.com/jzlib/ - "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 optionally depends on 'Compress-LZF', a Java library for encoding and +decoding data in LZF format, written by Tatu Saloranta. It can be obtained at: - "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: + * license/LICENSE.compress-lzf.txt (Apache License 2.0) +Copyright 2009-2010 Ning, Inc. - "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. +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 - 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. +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. + * HOMEPAGE: + * https://github.com/ning/compress - 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 product optionally depends on 'lz4', a LZ4 Java compression +and decompression library written by Adrien Grand. It can be obtained at: - 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: + * LICENSE: + * license/LICENSE.lz4.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jpountz/lz4-java - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +This product optionally depends on 'lzma-java', a LZMA Java compression +and decompression library, which can be obtained at: - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + * LICENSE: + * license/LICENSE.lzma-java.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jponge/lzma-java - (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 product contains a modified portion of 'jfastlz', a Java port of FastLZ compression +and decompression library written by William Kinney. It can be obtained at: - (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. + * LICENSE: + * license/LICENSE.jfastlz.txt (MIT License) +The MIT 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. +Copyright (c) 2009 William Kinney - 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. +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: - 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 above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. - 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 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. + * HOMEPAGE: + * https://code.google.com/p/jfastlz/ - 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 product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data +interchange format, which can be obtained at: - 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. + * LICENSE: + * license/LICENSE.protobuf.txt (New BSD License) +Protocol Buffers - Google's data interchange format +Copyright 2013 Google Inc. All rights reserved. +https://developers.google.com/protocol-buffers/ - END OF TERMS AND CONDITIONS +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: - APPENDIX: How to apply the Apache License to your 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 Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. - 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 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 [yyyy] [name of copyright owner] +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + * HOMEPAGE: + * https://github.com/google/protobuf - 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 product optionally depends on 'Snappy', a compression library produced +by Google Inc, which can be obtained at: - http://www.apache.org/licenses/LICENSE-2.0 + * LICENSE: + * license/LICENSE.snappy.txt (New BSD License) +Copyright 2011, Google Inc. +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: + +* 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 Google 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. + * HOMEPAGE: + * https://github.com/google/snappy + +This product optionally depends on 'JBoss Marshalling', an alternative Java +serialization API, which can be obtained at: + + * LICENSE: + * license/LICENSE.jboss-marshalling.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jboss-remoting/jboss-marshalling + +This product optionally depends on 'Apache Commons Logging', a logging +framework, which can be obtained at: + + * LICENSE: + * license/LICENSE.commons-logging.txt (Apache License 2.0) + * HOMEPAGE: + * https://commons.apache.org/logging/ + +This product optionally depends on 'Apache Log4J', a logging framework, which +can be obtained at: + + * LICENSE: + * license/LICENSE.log4j.txt (Apache License 2.0) + * HOMEPAGE: + * https://logging.apache.org/log4j/ + +This product optionally depends on 'Aalto XML', an ultra-high performance +non-blocking XML processor, which can be obtained at: + + * LICENSE: + * license/LICENSE.aalto-xml.txt (Apache License 2.0) +This copy of Aalto XML processor 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 derivate works. + +You may obtain a copy of the License at: + +https://www.apache.org/licenses/ + +A copy is also included with both the the downloadable source code package +and jar that contains class bytecodes, as file "ASL 2.0". In both cases, +that file should be located next to this file: in source distribution +the location should be "release-notes/asl"; and in jar "META-INF/" + * HOMEPAGE: + * http://wiki.fasterxml.com/AaltoHome + +This product contains a modified version of 'HPACK', a Java implementation of +the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at: + + * LICENSE: + * license/LICENSE.hpack.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/twitter/hpack + +This product contains a modified version of 'HPACK', a Java implementation of +the HTTP/2 HPACK algorithm written by Cory Benfield. It can be obtained at: + + * LICENSE: + * license/LICENSE.hyper-hpack.txt (MIT License) +The MIT License (MIT) + +Copyright (c) 2014 Cory Benfield + +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. + * HOMEPAGE: + * https://github.com/python-hyper/hpack/ + +This product contains a modified version of 'HPACK', a Java implementation of +the HTTP/2 HPACK algorithm written by Tatsuhiro Tsujikawa. It can be obtained at: + + * LICENSE: + * license/LICENSE.nghttp2-hpack.txt (MIT License) +The MIT License + +Copyright (c) 2012, 2014, 2015, 2016 Tatsuhiro Tsujikawa +Copyright (c) 2012, 2014, 2015, 2016 nghttp2 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. + * HOMEPAGE: + * https://github.com/nghttp2/nghttp2/ + +This product contains a modified portion of 'Apache Commons Lang', a Java library +provides utilities for the java.lang API, which can be obtained at: + + * LICENSE: + * license/LICENSE.commons-lang.txt (Apache License 2.0) + * HOMEPAGE: + * https://commons.apache.org/proper/commons-lang/ + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +opentracing-grpc 0.2.1 Opentracing.Io +Apache 2.0 +Used by: [helidon-grpc-client, helidon-grpc-server] +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +io.opentracing.contrib:opentracing-grpc (io.opentracing.contrib:opentracing-grpc) + Copyright 2017-2019 The OpenTracing Authors +-------------------------------------------- +License Identifier: Apache-2.0 +-------------------------------------------- +Fourth Party Dependencies +-------------------------------------------- +"OpenTracing API" (io.opentracing:opentracing-api) + Copyright 2016-2019 The OpenTracing Authors + Apache License Version 2.0 +-------------------------------------------- +"OpenTracing-util" (io.opentracing:opentracing-util) + Copyright 2016-2019 The OpenTracing Authors + Apache License Version 2.0 +-------------------------------------------- +"OpenTracing-noop" (io.opentracing:opentracing-noop) + Copyright 2016-2019 The OpenTracing Authors + Apache License Version 2.0 + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +opentracing-tracerresolver 0.1.8 opentracing-contrib +Apache 2.0 +Used by: [helidon-tracing-tracer-resolver] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +opentracing-tracerresolver: 0.1.8, Apache 2.0 +Copyright 2017-2019 The OpenTracing Authors +-------------------------------------------------------------------------- +4th-party dependencies: +OpenTracing API for Java: 0.33.0, Apache 2.0 (opentracing-api is used in opentracing-tracerresolver) +Copyright 2016-2019 The OpenTracing Authors +--------------------------------------------------------------------------- +License Identifier: Apache-2.0 + + +======================================================================= +Full Text of Referenced Licenses +======================================================================= + EPL-1.0 Eclipse Public License, Version 1.0 (EPL-1.0) @@ -8380,347 +8443,571 @@ 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. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -EPL-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. +LGPL-2.1-only +GNU LESSER GENERAL PUBLIC LICENSE +Version 2.1, February 1999 -1. DEFINITIONS +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. -"Contribution" means: +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence +the version number 2.1.] - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and +Preamble - 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. +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. -"Contributor" means any person or entity that Distributes the Program. +This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. -"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. +When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. -"Program" means the Contributions Distributed in accordance with this -Agreement. +To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. -"Recipient" means anyone who receives the Program under this Agreement -or any Secondary License (as applicable), including Contributors. +For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. -"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. +We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. -"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. +To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. -"Distribute" means the acts of a) distributing or b) making available -in any manner that enables the transfer of a copy. +Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. -"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. +Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. -"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. +When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. -2. GRANT OF RIGHTS +We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. - 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. +For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public 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. +In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. - 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. +Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. - 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 precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. - 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). +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -3. REQUIREMENTS +0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". -3.1 If a Contributor Distributes the Program in any form, then: +A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. - 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 +The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) - 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; +"Source code" for a work means the preferred form of the work for +making modifications to it. For a library, 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 library. - 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; +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and +1. You may copy and distribute verbatim copies of the Library's +complete 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 distribute a copy of this License along with the +Library. - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. +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. -3.2 When the Program is Distributed as Source Code: +2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, 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) 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 +a) The modified work must itself be a software library. - b) a copy of this Agreement must be included with each copy of - the Program. +b) You must cause the files modified to carry prominent notices +stating that you changed the files and the date of any change. -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. +c) You must cause the whole of the work to be licensed at no +charge to all third parties under the terms of this License. -4. COMMERCIAL DISTRIBUTION +d) If a facility in the modified Library refers to a function or a +table of data to be supplied by an application program that uses +the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, +in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of +its purpose remains meaningful. -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 function in a library to compute square roots has +a purpose that is entirely well-defined independent of the +application. Therefore, Subsection 2d requires that any +application-supplied function or table used by this function must +be optional: if the application does not supply it, the square +root function must still compute square roots.) -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. +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +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 Library, 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. -5. NO WARRANTY +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 Library. -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. +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. -6. DISCLAIMER OF LIABILITY +3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. -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. +Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. -7. GENERAL +This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. -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. +4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you 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. -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. +If distribution of 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 satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. -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. +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this 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. +However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. -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. +When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. -Exhibit A - Form of Secondary Licenses Notice +If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) -"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}." +Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. +6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. - 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 must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: - You may add additional accurate notices of copyright ownership. +a) Accompany the work with the complete corresponding +machine-readable source code for the Library including whatever +changes were used in the work (which must be distributed under +Sections 1 and 2 above); and, if the work is an executable linked +with the Library, with the complete machine-readable "work that +uses the Library", as object code and/or source code, so that the +user can modify the Library and then relink to produce a modified +executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the +Library will not necessarily be able to recompile the application +to use the modified definitions.) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -MPL-2.0 -Mozilla Public License Version 2.0 -================================== +b) Use a suitable shared library mechanism for linking with the +Library. A suitable mechanism is one that (1) uses at run time a +copy of the library already present on the user's computer system, +rather than copying library functions into the executable, and (2) +will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. -1. Definitions --------------- +c) Accompany the work with a written offer, valid for at +least three years, to give the same user the materials +specified in Subsection 6a, above, for a charge no more +than the cost of performing this distribution. -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. +d) If distribution of the work is made by offering access to copy +from a designated place, offer equivalent access to copy the above +specified materials from the same place. -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. +e) Verify that the user has already received a copy of these +materials or that you have already sent this user a copy. -1.3. "Contribution" - means Covered Software of a particular Contributor. +For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be 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.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. +It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. -1.5. "Incompatible With Secondary Licenses" - means +7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or +a) Accompany the combined library with a copy of the same work +based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. - (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. +b) Give prominent notice with the combined library of the fact +that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. -1.6. "Executable Form" - means any form of the work other than Source Code Form. +8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library 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. -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. +9. 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 Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. -1.8. "License" - means this document. +10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +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 with +this License. -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. +11. 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 Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library 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 Library. -1.10. "Modifications" - means any of the following: +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) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or +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) any new file in Source Code Form that contains any Covered - Software. +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, +12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library 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. + +13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +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 Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +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 + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. 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 LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries + +If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + +To apply these terms, attach the following notices to the library. 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 (C) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the +library `Frob' (a library for tweaking knobs) written by James Random Hacker. + +, 1 April 1990 +Ty Coon, President of Vice + +That's all there is to it! +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +MPL-2.0 +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +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. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (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. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +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. + +1.8. "License" + means this document. + +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. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +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 @@ -9036,511 +9323,489 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice defined by the Mozilla Public License, v. 2.0. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -LGPL-2.1-only -GNU LESSER GENERAL PUBLIC LICENSE -Version 2.1, February 1999 - -Copyright (C) 1991, 1999 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts -as the successor of the GNU Library Public License, version 2, hence -the version number 2.1.] - -Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - -This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. +Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -When we speak of free software, we are referring to freedom of use, -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 and use pieces of -it in new free programs; and that you are informed that you can do -these things. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. + 1. Definitions. -For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. 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 a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. + "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, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. + "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. -We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. + "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). -For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public 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. -In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. + "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." -Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. + "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 precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. + 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. -GNU LESSER GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + 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. -0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". + 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 "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -"Source code" for a work means the preferred form of the work for -making modifications to it. For a library, 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 library. + (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 -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. + (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. -1. You may copy and distribute verbatim copies of the Library's -complete 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 distribute a copy of this License along with the -Library. + 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 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. + 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. -2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: + 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) The modified work must itself be a software library. + 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. -b) You must cause the files modified to carry prominent notices -stating that you changed the files and the date of any change. + 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. -c) You must cause the whole of the work to be licensed at no -charge to all third parties under the terms of 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. -d) If a facility in the modified Library refers to a function or a -table of data to be supplied by an application program that uses -the facility, other than as an argument passed when the facility -is invoked, then you must make a good faith effort to ensure that, -in the event an application does not supply such function or -table, the facility still operates, and performs whatever part of -its purpose remains meaningful. + END OF TERMS AND CONDITIONS -(For example, a function in a library to compute square roots has -a purpose that is entirely well-defined independent of the -application. Therefore, Subsection 2d requires that any -application-supplied function or table used by this function must -be optional: if the application does not supply it, the square -root function must still compute square roots.) + APPENDIX: How to apply the Apache License to your work. -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -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 Library, 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. + 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. -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 Library. + Copyright [yyyy] [name of copyright owner] -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope 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 -3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. + http://www.apache.org/licenses/LICENSE-2.0 -Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. + 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. +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +EPL-2.0 +Eclipse Public License - v 2.0 -This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. + 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. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you 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. +1. DEFINITIONS -If distribution of 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 satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. +"Contribution" means: -5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and -However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. + 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. -When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. +"Contributor" means any person or entity that Distributes the Program. -If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) +"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. -Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. +"Program" means the Contributions Distributed in accordance with this +Agreement. -6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. -You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: +"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. -a) Accompany the work with the complete corresponding -machine-readable source code for the Library including whatever -changes were used in the work (which must be distributed under -Sections 1 and 2 above); and, if the work is an executable linked -with the Library, with the complete machine-readable "work that -uses the Library", as object code and/or source code, so that the -user can modify the Library and then relink to produce a modified -executable containing the modified Library. (It is understood -that the user who changes the contents of definitions files in the -Library will not necessarily be able to recompile the application -to use the modified definitions.) +"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. -b) Use a suitable shared library mechanism for linking with the -Library. A suitable mechanism is one that (1) uses at run time a -copy of the library already present on the user's computer system, -rather than copying library functions into the executable, and (2) -will operate properly with a modified version of the library, if -the user installs one, as long as the modified version is -interface-compatible with the version that the work was made with. +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. -c) Accompany the work with a written offer, valid for at -least three years, to give the same user the materials -specified in Subsection 6a, above, for a charge no more -than the cost of performing this distribution. +"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. -d) If distribution of the work is made by offering access to copy -from a designated place, offer equivalent access to copy the above -specified materials from the same place. +"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. -e) Verify that the user has already received a copy of these -materials or that you have already sent this user a copy. +2. GRANT OF RIGHTS -For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be 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. + 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. -It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. + 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. -7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: + 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) Accompany the combined library with a copy of the same work -based on the Library, uncombined with any other library -facilities. This must be distributed under the terms of the -Sections above. + 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) Give prominent notice with the combined library of the fact -that part of it is a work based on the Library, and explaining -where to find the accompanying uncombined form of the same work. + 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). -8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library 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. +3. REQUIREMENTS -9. 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 Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. +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 -10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -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 with -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; -11. 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 Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library 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 Library. + 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; -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. + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; 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. + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. +3.2 When the Program is Distributed as Source Code: -12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library 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. + 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 -13. The Free Software Foundation may publish revised and/or new -versions of the Lesser 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. + b) a copy of this Agreement must be included with each copy of + the Program. -Each version is given a distinguishing version number. If the Library -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 Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. +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. -14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -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. +4. COMMERCIAL DISTRIBUTION -NO WARRANTY +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. -15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "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 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +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. -16. 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 LIBRARY 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 -LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. +5. NO WARRANTY -END OF TERMS AND CONDITIONS +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. -How to Apply These Terms to Your New Libraries +6. DISCLAIMER OF LIABILITY -If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public 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. -To apply these terms, attach the following notices to the library. 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. +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. -Copyright (C) +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. -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. +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 library 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 -Lesser General Public License for more details. +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. -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +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. -Also add information on how to contact you by electronic and paper mail. +Exhibit A - Form of Secondary Licenses Notice -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: +"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}." -Yoyodyne, Inc., hereby disclaims all copyright interest in the -library `Frob' (a library for tweaking knobs) written by James Random Hacker. + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. -, 1 April 1990 -Ty Coon, President of Vice + 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. -That's all there is to it! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + You may add additional accurate notices of copyright ownership. +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Third Party Attributions for Examples, Tests, Builds, etc diff --git a/archetypes/database-se/src/main/resources/src/main/java/__pkg__/PokemonService.java.mustache b/archetypes/database-se/src/main/resources/src/main/java/__pkg__/PokemonService.java.mustache index 992fb6f122f..28312cb97e0 100644 --- a/archetypes/database-se/src/main/resources/src/main/java/__pkg__/PokemonService.java.mustache +++ b/archetypes/database-se/src/main/resources/src/main/java/__pkg__/PokemonService.java.mustache @@ -52,25 +52,17 @@ public class PokemonService implements Service { } private void listTypes(ServerRequest request, ServerResponse response) { - try { - List pokemonTypes = - dbClient.execute(exec -> exec.namedQuery("select-all-types")) - .map(row -> row.as(PokemonType.class)).collectList().get(); - response.send(pokemonTypes); - } catch (InterruptedException | ExecutionException e) { - throw new RuntimeException(e); - } + dbClient.execute(exec -> exec.namedQuery("select-all-types")) + .map(row -> row.as(PokemonType.class)) + .collectList() + .forSingle(response::send); } private void listPokemons(ServerRequest request, ServerResponse response) { - try { - List pokemons = - dbClient.execute(exec -> exec.namedQuery("select-all-pokemons")) - .map(it -> it.as(Pokemon.class)).collectList().get(); - response.send(pokemons); - } catch (InterruptedException | ExecutionException e) { - throw new RuntimeException(e); - } + dbClient.execute(exec -> exec.namedQuery("select-all-pokemons")) + .map(it -> it.as(Pokemon.class)) + .collectList() + .forSingle(response::send); } private void getPokemonById(ServerRequest request, ServerResponse response) { @@ -82,7 +74,7 @@ public class PokemonService implements Service { .execute()) .thenAccept(maybeRow -> maybeRow .ifPresentOrElse( - row -> sendRow(row, response), + row -> response.send(row.as(Pokemon.class)), () -> sendNotFound(response, "Pokemon " + pokemonId + " not found"))) .exceptionally(throwable -> sendError(throwable, response)); } catch (NumberFormatException ex) { @@ -93,13 +85,10 @@ public class PokemonService implements Service { private void getPokemonByName(ServerRequest request, ServerResponse response) { String pokemonName = request.path().param("name"); dbClient.execute(exec -> exec.namedGet("select-pokemon-by-name", pokemonName)) - .thenAccept(it -> { - if (it.isEmpty()) { - sendNotFound(response, "Pokemon " + pokemonName + " not found"); - } else { - sendRow(it.get(), response); - } - }) + .thenAccept(maybeRow -> maybeRow + .ifPresentOrElse( + row -> response.send(row.as(Pokemon.class)), + () -> sendNotFound(response, "Pokemon " + pokemonName + " not found"))) .exceptionally(throwable -> sendError(throwable, response)); } @@ -131,10 +120,6 @@ public class PokemonService implements Service { response.send(message); } - private void sendRow(DbRow row, ServerResponse response) { - response.send(row.as(javax.json.JsonObject.class)); - } - /** * Send a 500 response code and a few details. * diff --git a/archetypes/database-se/src/main/resources/src/test/java/__pkg__/MainTest.java.mustache b/archetypes/database-se/src/main/resources/src/test/java/__pkg__/MainTest.java.mustache index a38a1ce0483..ffe5aa22b1b 100644 --- a/archetypes/database-se/src/main/resources/src/test/java/__pkg__/MainTest.java.mustache +++ b/archetypes/database-se/src/main/resources/src/test/java/__pkg__/MainTest.java.mustache @@ -79,14 +79,14 @@ public class MainTest { webClient.get() .path("/pokemon/1") .request(JsonObject.class) - .thenAccept(pokemon -> assertThat(pokemon.getString("NAME"), is("Bulbasaur"))) + .thenAccept(pokemon -> assertThat(pokemon.getString("name"), is("Bulbasaur"))) .toCompletableFuture() .get(); webClient.get() .path("/pokemon/name/Charmander") .request(JsonObject.class) - .thenAccept(pokemon -> assertThat(pokemon.getJsonNumber("ID_TYPE").intValue(), is(10))) + .thenAccept(pokemon -> assertThat(pokemon.getJsonNumber("idType").intValue(), is(10))) .toCompletableFuture() .get(); diff --git a/common/common/src/main/java/io/helidon/common/LazyValueImpl.java b/common/common/src/main/java/io/helidon/common/LazyValueImpl.java index 3d6ef99b65f..10043ee716f 100644 --- a/common/common/src/main/java/io/helidon/common/LazyValueImpl.java +++ b/common/common/src/main/java/io/helidon/common/LazyValueImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,21 +16,57 @@ package io.helidon.common; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.VarHandle; +import java.util.concurrent.Semaphore; import java.util.function.Supplier; class LazyValueImpl implements LazyValue { - private final Lock theLock = new ReentrantLock(); + /** + * VarHandle's for atomic access to {@code theLock} and {@code loaded} + * instance variables. + */ + private static final VarHandle THE_LOCK; + private static final VarHandle LOADED; + static { + try { + THE_LOCK = MethodHandles.lookup().findVarHandle(LazyValueImpl.class, "theLock", Semaphore.class); + LOADED = MethodHandles.lookup().findVarHandle(LazyValueImpl.class, "loaded", int.class); + } catch (Exception e) { + throw new Error("Unable to obtain VarHandle's", e); + } + } + + /** + * Cached value returned by supplier or passed directly to constructor. + */ private T value; + /** + * Wrapped delegate or {@code null} if using direct value instead. + */ private Supplier delegate; - private volatile boolean loaded; + + /** + * Semaphore to prevent concurrent update of internal state. Updated + * only via {@code THE_LOCK}. + */ + private volatile Semaphore theLock; + + /** + * Boolean indicating value if readily available without calling + * a supplier. + */ + private volatile int loaded; + + private static final int DONE = -1; + private static final int INIT = 0; + private static final int WORKING = INIT + 1; LazyValueImpl(T value) { this.value = value; - this.loaded = true; + this.loaded = DONE; } LazyValueImpl(Supplier supplier) { @@ -39,27 +75,62 @@ class LazyValueImpl implements LazyValue { @Override public boolean isLoaded() { - return loaded; + return loaded == DONE; } + /** + * Ensure only a single thread calls the delegate if the value is not yet loaded. + * Note that {@code loadedCopy} and {@code theLockCopy} represent thread copies + * of the corresponding volatile variables, while {@code LOADED} and {@code THE_LOCK} + * are var references to those volatile variables. + * + * @return the value + */ @Override public T get() { - if (loaded) { + int loadedCopy = loaded; + if (loadedCopy == DONE) { return value; } - // not loaded (probably) - theLock.lock(); + Semaphore theLockCopy = theLock; + + // Race winner that sets 'loaded' to WORKING skips this loop, losers enter it + while (loadedCopy != DONE && !LOADED.compareAndSet(this, INIT, WORKING)) { + // One of the losers initializes 'theLock' + if (theLockCopy == null) { + THE_LOCK.compareAndSet(this, null, new Semaphore(0)); + theLockCopy = theLock; + } + + loadedCopy = loaded; + if (loadedCopy == WORKING) { + theLockCopy.acquireUninterruptibly(); + loadedCopy = loaded; + } + } try { - if (loaded) { + if (loadedCopy == DONE) { return value; } + loadedCopy = INIT; value = delegate.get(); - loaded = true; delegate = null; + loadedCopy = DONE; + loaded = DONE; } finally { - theLock.unlock(); + // If condition holds, delegate threw exception + if (loadedCopy == INIT) { + loaded = INIT; + } + // Assert: if theLock is null, the successful compare-and-set of THE_LOCK is + // in the future; but after such compare-and-set there will be a check of + // loaded as not WORKING, resulting in no attempt to acquire the semaphore + theLockCopy = theLock; + if (theLockCopy != null) { + theLockCopy.release(); + } } return value; diff --git a/common/common/src/test/java/io/helidon/common/LazyValueTest.java b/common/common/src/test/java/io/helidon/common/LazyValueTest.java index 1d86d6d4662..59d609eb43d 100644 --- a/common/common/src/test/java/io/helidon/common/LazyValueTest.java +++ b/common/common/src/test/java/io/helidon/common/LazyValueTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package io.helidon.common; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.atomic.AtomicInteger; @@ -103,4 +104,36 @@ void testSupplierParallel() { assertThat(called.get(), is(1)); assertThat(threadsStarted.get(), is(threadCount)); } + + @Test + void testSemaphoreRelease() throws Exception { + CompletableFuture future = new CompletableFuture<>(); + LazyValue value = LazyValue.create(() -> { + try { + future.complete(null); + Thread.sleep(500); + } catch (InterruptedException e) { + // falls through + } + return "DONE"; + }); + + Thread[] threads = new Thread[3]; + threads[0] = new Thread(value::get); + threads[0].start(); + future.get(); // wait for supplier to be called + + threads[1] = new Thread(value::get); + threads[2] = new Thread(value::get); + threads[1].start(); // blocked, then released by thread[0] + threads[2].start(); // blocked, then released by thread[1] + + for (Thread t : threads) { + try { + t.join(); + } catch (InterruptedException e) { + // falls through + } + } + } } \ No newline at end of file diff --git a/common/reactive/src/main/java/io/helidon/common/reactive/MultiConcatArray.java b/common/reactive/src/main/java/io/helidon/common/reactive/MultiConcatArray.java index 0e3bc61ffe8..eec852e3f97 100644 --- a/common/reactive/src/main/java/io/helidon/common/reactive/MultiConcatArray.java +++ b/common/reactive/src/main/java/io/helidon/common/reactive/MultiConcatArray.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021 Oracle and/or its affiliates. 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. @@ -17,8 +17,9 @@ package io.helidon.common.reactive; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.VarHandle; import java.util.concurrent.Flow; -import java.util.concurrent.atomic.AtomicInteger; /** * Relay items in order from subsequent Flow.Publishers as a single Multi source. @@ -35,31 +36,101 @@ final class MultiConcatArray implements Multi { public void subscribe(Flow.Subscriber subscriber) { ConcatArraySubscriber parent = new ConcatArraySubscriber<>(subscriber, sources); subscriber.onSubscribe(parent); - parent.nextSource(); + parent.nextSource(parent.produced); } - static final class ConcatArraySubscriber extends SubscriptionArbiter - implements Flow.Subscriber { + protected static final class ConcatArraySubscriber + implements Flow.Subscriber, Flow.Subscription { private final Flow.Subscriber downstream; private final Flow.Publisher[] sources; - private final AtomicInteger wip; + private Flow.Subscription subscription; private int index; - private long produced; + private long produced = INIT; + + private volatile long requested = SEE_OTHER; + private volatile long pending = 0; + private volatile long oldRequested = 0; + private volatile Thread lastThreadCompleting; + private boolean redo; + + static final long BAD = Long.MIN_VALUE; + static final long CANCEL = Long.MIN_VALUE + 1; + static final long SEE_OTHER = Long.MIN_VALUE + 2; + static final long INIT = Long.MIN_VALUE + 3; + + static final VarHandle REQUESTED; + static final VarHandle PENDING; + static final VarHandle LASTTHREADCOMPLETING; + + static { + try { + MethodHandles.Lookup lookup = MethodHandles.lookup(); + REQUESTED = lookup.findVarHandle(ConcatArraySubscriber.class, "requested", long.class); + PENDING = lookup.findVarHandle(ConcatArraySubscriber.class, "pending", long.class); + LASTTHREADCOMPLETING = lookup + .findVarHandle(ConcatArraySubscriber.class, "lastThreadCompleting", Thread.class); + } catch (Exception e) { + throw new Error("Expected lookup to succeed", e); + } + } ConcatArraySubscriber(Flow.Subscriber downstream, Flow.Publisher[] sources) { this.downstream = downstream; this.sources = sources; - this.wip = new AtomicInteger(); } @Override public void onSubscribe(Flow.Subscription subscription) { - super.setSubscription(subscription); + produced++; // assert: matching request(1) has been done by nextSource() + this.subscription = subscription; + long oldProduced = produced; + long oldR = oldRequested; + + long p0 = pending; + if (p0 < 0 && oldR != CANCEL) { + // not entirely necessary, since BAD and CANCEL must be observed only eventually, but + // the least surprising behaviour is: + // if pending is known to be BAD or CANCEL, make sure requested does not + // appear good even temporarily + oldR = p0; + } + + // assert: requested == SEE_OTHER + requested = oldR; // assume non-conforming upstream Publisher may start delivering onNext or + // onComplete concurrently upon observing a concurrent request: only use + // values read before this assignment, or + // method-locals, or atomic updates competing with request() or cancel() + + if (oldR == CANCEL) { + subscription.cancel(); + return; + } + + if (oldR != oldProduced) { + long req = unconsumed(oldR, oldProduced); + // assert: req != CANCEL + subscription.request(req); // assert: requesting necessarily from this subscription; + // if a concurrent onComplete is fired by a non-conforming + // Publisher before this request, the request is no-op, and onComplete + // will carry over req to the next Publisher - no double accounting + // occurs; + // but if there is no concurrent onComplete, need to request + // from this subscription + // (plus trivial arithmetical proof based on commutativity of + // addition - produced may change concurrently, too, but only by + // no more than concurrent requests, and the req can be seen to be + // preserved) + } + + long p = claimPending(); + if (p != 0) { // all concurrent onSubscribe and requests that observe requested >= INIT attempt this + updateRequest(p); + } } @Override @@ -70,38 +141,215 @@ public void onNext(T item) { @Override public void onError(Throwable throwable) { + REQUESTED.setOpaque(this, CANCEL); downstream.onError(throwable); } @Override public void onComplete() { - long produced = this.produced; - if (produced != 0L) { - this.produced = 0L; - super.produced(produced); + Thread current = Thread.currentThread(); + if (LASTTHREADCOMPLETING.getOpaque(this) == current) { + redo = true; + return; + } + + LASTTHREADCOMPLETING.setOpaque(this, current); + VarHandle.storeStoreFence(); + boolean sameThread; + boolean again; + do { + redo = false; + long r = (long) REQUESTED.getAndSet(this, SEE_OTHER); + subscription = null; + + nextSource(r); + again = redo; + VarHandle.loadLoadFence(); + sameThread = LASTTHREADCOMPLETING.getOpaque(this) == current; + } while (again && sameThread); + + if (sameThread) { + LASTTHREADCOMPLETING.compareAndSet(this, current, null); } - nextSource(); } - public void nextSource() { - if (wip.getAndIncrement() == 0) { - do { - if (index == sources.length) { - downstream.onComplete(); - } else { - sources[index++].subscribe(this); - } - } while (wip.decrementAndGet() != 0); + protected void nextSource(long r) { + // assert: requested == SEE_OTHER + if (r == CANCEL) { + return; + } + + if (index == sources.length) { + // assert: no onSubscribe in the future, so no need to preserve oldRequested + downstream.onComplete(); + return; + } + + Flow.Publisher nextPub = sources[index++]; + + oldRequested = r < INIT || r == Long.MAX_VALUE ? r : r + 1; + + nextPub.subscribe(this); + } + + protected static long unconsumed(long req, long produced) { + // assert: all invocations of unconsumed ensure req > produced, or + // req represents a final state, where produced does not matter - + // MAX_VALUE, BAD, CANCEL + + if (req >= INIT && req < Long.MAX_VALUE) { + if (produced < 0 && Long.MAX_VALUE + produced < req) { + // assert: if produced < 0, then MAX_VALUE + produced does not overflow + req = Long.MAX_VALUE; + } else { + // assert: if produced >= 0, then req-produced does not overflow (req > produced) + req -= produced; + } + + // assert: req > 0 } + + return req; } @Override public void request(long n) { - if (n <= 0) { - downstream.onError(new IllegalArgumentException("Rule §3.9 violated: non-positive requests are forbidden")); - } else { - super.request(n); + updateRequest(n <= 0 ? BAD : n); + } + + /* + * If requested is in a state where update is possible, and there is anything accumulated in + * the pending counter, try to claim it. If the caller observes a non-zero return value, they + * must updateRequest with that value. + */ + private long claimPending() { + long p; + do { + p = pending; + if (p == 0) { + return 0; + + } + + long r = requested; + if (r < INIT && !(r == BAD && p == CANCEL)) { + // assert: updating requested is needed: + // + // BAD | if p == CANCEL + // CANCEL | no + // SEE_OTHER | no + // >= INIT | if p != 0 + return 0; + } + } while (!PENDING.compareAndSet(this, p, p < 0 ? p : 0)); + + return p; + } + + private long updatePending(long n) { + long req; + long nextReq; + do { + req = pending; + if (req < 0 && !(req == BAD && n == CANCEL)) { + // assert: updating pending is needed: + // + // BAD | if n == CANCEL + // CANCEL | no + // >= 0 | yes + break; + } + + nextReq = n < 0 ? n + // assert: n >= 0 + : Long.MAX_VALUE - n <= req ? Long.MAX_VALUE : req + n; + } while (!PENDING.compareAndSet(this, req, nextReq)); + + return claimPending(); + } + + private void updateRequest(long n) { + Flow.Subscription sub; + long req; + long nextReq; + do { + req = requested; + while (req < INIT && !(req == BAD && n == CANCEL)) { + // assert: updating requested is needed: + // + // BAD | if n == CANCEL + // CANCEL | no - terminal state + // SEE_OTHER | no - keep track of n in pending + // >= INIT | yes + + if (req != SEE_OTHER) { + return; + } + n = updatePending(n); + if (n == 0) { // assert: requested is in a terminal state, or there is a claimPending() + // now or in the future that will propagate pending to requested and + // the actual Publisher + return; + } + + req = requested; + } + + sub = subscription; + nextReq = n < INIT ? n + // assert: n >= 0 + : Long.MAX_VALUE - n <= req ? Long.MAX_VALUE : req + n; + } while (!REQUESTED.compareAndSet(this, req, nextReq)); + + if (nextReq < INIT) { + // assert: good requests should be delivered once and only once to ensure + // no double-accounting happens - so we only + // attempt delivering to subscription seen before updating requested, and + // mutual exclusion between accesses to subscription.request() from + // request() and onSubscribe() is enforced. + // When MAX_VALUE is reached, good requests do not need delivering: concurrent + // request() may miss an update to subscription, and attempt to deliver to an + // old subscription, as it will not be + // able to observe new subscriptions (new values of requested), but good requests + // do not need delivering in this case + + // assert: cancellations and bad requests can be delivered more than once - no + // double accounting + // occurs, and only one onError will be delivered by upstream Publisher. For + // this reason can read subscription as it appears after updating requested - + // this may result in both onSubscribe() and concurrent request() to call + // subscription.request, but this is ok for a bad request + // What we do not want to happen, is for bad request to be delivered to an old + // subscription, the update of which concurrent request() cannot detect after + // requested reaches MAX_VALUE - so, should read subscription after updating + // requested + sub = subscription; + + // assert: subscription may be null, if requested was updated before it was set + // to SEE_OTHER by onComplete, but before subscription is set again by + // onSubscribe; consequently, if it is null, then there is onSubscribe in the + // future that will observe the update of requested and signal appropriately + if (sub != null) { + if (nextReq == CANCEL) { + sub.cancel(); + } else { + sub.request(BAD); + } + } + return; + } + + // assert: nextReq == req, if req == MAX_VALUE - nothing needs doing + if (nextReq != req) { + // assert: sub is not null, because when req != MAX_VALUE the change of subscription + // cannot be missed + sub.request(nextReq - req); } } + + @Override + public void cancel() { + updateRequest(CANCEL); + } } } diff --git a/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParser.java b/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParser.java index 9dc379aa242..0784ad52dde 100644 --- a/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParser.java +++ b/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -149,7 +149,12 @@ private static ObjectNode fromConfig(ConfigObject config) { } else if (value instanceof ConfigObject) { builder.addObject(key, fromConfig((ConfigObject) value)); } else { - builder.addValue(key, value.unwrapped().toString()); + Object unwrapped = value.unwrapped(); + if (unwrapped == null) { + builder.addValue(key, ""); + } else { + builder.addValue(key, String.valueOf(unwrapped)); + } } }); return builder.build(); @@ -163,7 +168,12 @@ private static ListNode fromList(ConfigList list) { } else if (value instanceof ConfigObject) { builder.addObject(fromConfig((ConfigObject) value)); } else { - builder.addValue(value.unwrapped().toString()); + Object unwrapped = value.unwrapped(); + if (unwrapped == null) { + builder.addValue(""); + } else { + builder.addValue(String.valueOf(unwrapped)); + } } }); return builder.build(); diff --git a/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParserBuilder.java b/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParserBuilder.java index d386c9f35d3..7577f83c272 100644 --- a/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParserBuilder.java +++ b/config/hocon/src/main/java/io/helidon/config/hocon/HoconConfigParserBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,6 +70,7 @@ public HoconConfigParserBuilder resolveOptions(ConfigResolveOptions resolveOptio * * @return new instance of HOCON ConfigParser. */ + @Override public HoconConfigParser build() { return new HoconConfigParser(resolvingEnabled, resolveOptions); } diff --git a/config/hocon/src/test/java/io/helidon/config/hocon/HoconConfigParserTest.java b/config/hocon/src/test/java/io/helidon/config/hocon/HoconConfigParserTest.java index 031a9938dfc..64033e8bedc 100644 --- a/config/hocon/src/test/java/io/helidon/config/hocon/HoconConfigParserTest.java +++ b/config/hocon/src/test/java/io/helidon/config/hocon/HoconConfigParserTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,6 +48,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.hasItems; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; @@ -207,7 +208,7 @@ public void testConfigKeyEscapedNameComplex() { Config config = Config .builder(ConfigSources.create(JSON, HoconConfigParser.MEDIA_TYPE_APPLICATION_JSON)) - .addParser(new HoconConfigParser()) + .addParser(HoconConfigParser.create()) .disableEnvironmentVariablesSource() .disableSystemPropertiesSource() .disableParserServices() @@ -252,7 +253,7 @@ public void testConfigKeyEscapedNameComplex() { @Test public void testGetSupportedMediaTypes() { - HoconConfigParser parser = new HoconConfigParser(); + HoconConfigParser parser = HoconConfigParser.create(); assertThat(parser.supportedMediaTypes(), is(not(empty()))); } @@ -261,7 +262,7 @@ public void testGetSupportedMediaTypes() { public void testCustomTypeMapping() { Config config = Config .builder(ConfigSources.create(AppType.DEF, HoconConfigParser.MEDIA_TYPE_APPLICATION_JSON)) - .addParser(new HoconConfigParser()) + .addParser(HoconConfigParser.create()) .addMapper(AppType.class, new AppTypeMapper()) .disableEnvironmentVariablesSource() .disableSystemPropertiesSource() @@ -277,6 +278,26 @@ public void testCustomTypeMapping() { } + @Test + void testParserFromJson() { + Config config = Config.builder() + .disableSystemPropertiesSource() + .disableEnvironmentVariablesSource() + .disableParserServices() + .addParser(HoconConfigParser.create()) + .addSource(ConfigSources.classpath("config.json")) + .build(); + + Optional property = config.get("oracle.com").asString().asOptional(); + assertThat(property, is(Optional.of("1"))); + + property = config.get("nulls.null").asString().asOptional(); + assertThat(property, is(Optional.of(""))); + + List properties = config.get("nulls-array").asList(String.class).get(); + assertThat(properties, hasItems("test", "")); + } + // // helper // @@ -317,11 +338,11 @@ public static class AppType { + " storagePassphrase = \"${AES=thisIsEncriptedPassphrase}\"" + "}"; - private String greeting; - private String name; - private int pageSize; - private List basicRange; - private String storagePassphrase; + private final String greeting; + private final String name; + private final int pageSize; + private final List basicRange; + private final String storagePassphrase; public AppType( String name, @@ -365,15 +386,14 @@ private static class AppTypeMapper implements Function { @Override public AppType apply(Config config) throws ConfigMappingException, MissingValueException { - AppType app = new AppType( + + return new AppType( config.get("name").asString().get(), config.get("greeting").asString().get(), config.get("page-size").asInt().get(), config.get("basic-range").asList(Integer.class).get(), config.get("storagePassphrase").asString().get() ); - - return app; } } } diff --git a/config/hocon/src/test/resources/config.json b/config/hocon/src/test/resources/config.json index c21aa20fed7..9494f95de5d 100644 --- a/config/hocon/src/test/resources/config.json +++ b/config/hocon/src/test/resources/config.json @@ -6,5 +6,9 @@ "oracle": { "com": "1", "cz": "2" - } + }, + "nulls": { + "null": null + }, + "nulls-array": ["test", null] } diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 4b0b2c390c6..04ecd490acf 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -55,7 +55,7 @@ 20.2.0 15.0 15.0.0 - 1.32.1 + 1.35.0 30.0-jre 1.4.199 1.3 @@ -64,7 +64,7 @@ 1.5.18 1.0 1.2.5 - 2.11.1 + 2.12.1 1.1.0 2.1.1.Final 2.3.3 @@ -76,13 +76,13 @@ 1.0.0.Final 7.6.0.Final 3.1.0 - 2.32 + 2.33 2.0 1.0.2 1.1.6 1.1.6 4.13.1 - 5.6.2 + 5.7.0 2.5.0 2.13.3 1.2.3 @@ -108,8 +108,8 @@ 8.4.1.jre8 8.0.22 5.9.3.Final - 4.1.51.Final - 1.28.0 + 4.1.58.Final + 1.31.0 19.8.0.0 19.3.0.0 0.33.0 @@ -129,7 +129,7 @@ 2.0.2 1.1.2 3.1.SP2 - 3.1.4.Final + 3.1.6.Final 1.0.8 2.12.0 2.12.5 @@ -1109,6 +1109,12 @@ jackson-annotations ${version.lib.jackson} + + + junit + junit + ${version.lib.junit4} + io.netty netty-codec-dns diff --git a/etc/HELIDON_THIRD_PARTY_LICENSES.xml b/etc/HELIDON_THIRD_PARTY_LICENSES.xml index 6c45dd0e0b2..979e4a312c6 100644 --- a/etc/HELIDON_THIRD_PARTY_LICENSES.xml +++ b/etc/HELIDON_THIRD_PARTY_LICENSES.xml @@ -6279,9 +6279,9 @@ permitted. -------------------------------------------- - 82739 + 92238 Weld SE (Core) - 3.1.4.Final + 3.1.6.Final Red Hat, Inc. Apache 2.0 @@ -6840,9 +6840,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - 86321 + 92145 grpc-java - 1.32.1 + 1.35.0 The gRPC Authors Apache 2.0 @@ -6872,10 +6872,7 @@ HTTP & SPDY client for Android and Java applications, which can be obtained at: * LICENSE: - * Apache License 2.0 - * Copyright (C) 2014 Square, Inc. - * Copyright (C) 2012 Square, Inc. - * Copyright (C) 2012 The Android Open Source Project + * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) * HOMEPAGE: * https://github.com/square/okhttp * LOCATION_IN_GRPC: @@ -6886,29 +6883,50 @@ cloud-native high-performance edge/middle/service proxy, which can be obtained at: * LICENSE: - * Apache License 2.0 - * Copyright 2016-2019 Envoy Project Authors + * xds/third_party/envoy/LICENSE (Apache License 2.0) + * NOTICE: + * xds/third_party/envoy/NOTICE + Envoy + Copyright 2016-2019 Envoy Project Authors + Licensed under Apache License 2.0. See LICENSE for terms. * HOMEPAGE: * https://www.envoyproxy.io * LOCATION_IN_GRPC: * xds/third_party/envoy +This product contains a modified portion of 'protoc-gen-validate (PGV)', +an open source protoc plugin to generate polyglot message validators, +which can be obtained at: + + * LICENSE: + * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) + * NOTICE: + * xds/third_party/protoc-gen-validate/NOTICE + protoc-gen-validate + Copyright 2019 Envoy Project Authors + Licensed under Apache License 2.0. See LICENSE for terms. + * HOMEPAGE: + * https://github.com/envoyproxy/protoc-gen-validate + * LOCATION_IN_GRPC: + * xds/third_party/protoc-gen-validate + This product contains a modified portion of 'udpa', an open source universal data plane API, which can be obtained at: * LICENSE: - * Apache License 2.0 + * xds/third_party/udpa/LICENSE (Apache License 2.0) * HOMEPAGE: * https://github.com/cncf/udpa * LOCATION_IN_GRPC: * xds/third_party/udpa + -------------------------------------------- License Identifier: Apache-2.0 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- "perfmark:perfmark-api" (io.perfmark:perfmark-api) - Copyright 2019 Google LLC + Copyright 2019,2020 Google LLC Apache License Version 2.0 -------------------------------------------- "Gson" (com.google.code.gson:gson) @@ -6938,14 +6956,9 @@ Fourth Party Dependencies Copyright 2012 Google Inc. All Rights Reserved. Apache License Version 2.0 -------------------------------------------- -"OpenCensus" (io.opencensus:opencensus-*) - Copyright 2017,2019 OpenCensus Authors - Copyright 2016- 17, OpenCensus Authors - Copyright 2017, OpenCensus Authors - Apache License Version 2.0 --------------------------------------------- "Netty" (io.netty:netty-*) - Copyright 2014,2020 The Netty Project + Copyright 2011,2020 The Netty Project + Copyright 2014,2019 The Netty Project Copyright 2014 Twitter, Inc. Copyright (c) 2004-2011 QOS.ch Copyright 2012,2017 The Netty Project @@ -6955,7 +6968,7 @@ Fourth Party Dependencies Apache License Version 2.0 -------------------------------------------- "proto-google-common-protos" (com.google.api.grpc:proto-google-common-protos) - Copyright 2014, Google Inc. All rights reserved. + Copyright 2020 Google LLC Apache License Version 2.0 -------------------------------------------- "Checker Qual" (org.checkerframework:checker-compat-qual) @@ -7040,9 +7053,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - 82433 + 91744 jackson-databind - 2.11.1 + 2.12.1 FasterXML, LLC Apache 2.0 @@ -7050,18 +7063,51 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. helidon-security-providers-google-login TOP LEVEL COMPONENT NAMES: com.fasterxml.jackson.core:jackson-databind -Copyright © 2008–2019 FasterXML. All rights reserved. +Copyright © 2008–2012 FasterXML. All rights reserved. ---------------------------------------------------------------------- + +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 derivate works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 + +NOTICE FILE: +=============== +# 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, as well as supported +commercially by FasterXML.com. + +## Licensing + +Jackson core and extension components may be licensed under different licenses. +To find the details that apply to this artifact see the accompanying LICENSE file. +For more information, including possible other licensing options, contact +FasterXML.com (http://fasterxml.com). + +## 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. +=============== License Identifier: Apache-2.0 ====================End of Apache License 2.0 of top level component====================== FOURTH-PARTY DEPENDENCY -----------------jackson-core 2.11.0 ----------------------- +----------------jackson-core ----------------------- COPYRIGHT: Copyright (c) 2007-2020 Tatu Saloranta, tatu.saloranta@iki.fi LICENSE: Apache 2.0 ------------------jackson-annotations 2.11.0 ----------------------- +-----------------jackson-annotations ----------------------- COPYRIGHT: Copyright (c) 2007- 2020 Tatu Saloranta, tatu.saloranta@iki.fi LICENSE: Apache 2.0 @@ -7084,9 +7130,9 @@ License Identifier: Apache-2.0 - 86890 - jersey-client - 2.32 + 92068 + jersey-core-client + 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE @@ -7104,69 +7150,71 @@ https://github.com/eclipse-ee4j/jersey (The EPL license is reproduced below). 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. _________________________________________________________________ -Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. -Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. -Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. +jersey-core-client (org.glassfish.jersey.core:jersey-client) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +# 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 -------------------------------------------- -License Identifier: EPL-2.0 --------------------------------------------------------------------------- Fourth Party Dependencies -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) -Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. -Copyright (c) 2006 Google Inc. -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2006 Google Inc. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) -Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. -Copyright (c) 2018 Payara Foundation and/or its affiliates. -Copyright (C) 2006,2014 The Guava Authors -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2018 Payara Foundation and/or its affiliates. + Copyright (C) 2006,2014 The Guava Authors + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) -Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. -Copyright &#169; 2019 Eclipse Foundation. All rights reserved.<br> -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. + Copyright &#169; 2019 Eclipse Foundation. All rights reserved.<br> + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) -Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) -Copyright (C) 2009 The JSR-330 Expert Group -Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. -EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) -Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. -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. --------------------------------------------- + - 86888 - jersey-hk2 - 2.32 + 92161 + jersey-inject-hk2 + 2.33 GlassFish Eclipse Public License 2.0 + GPL v.2 with CPE @@ -7186,17 +7234,16 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. ____________________________________________________ - -Copyright (c) 2017,2019 Oracle and/or its affiliates. All rights reserved. +jersey-inject-hk2 (org.glassfish.jersey.inject:jersey-hk2) + Copyright (c) 2017,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- # Notice for Jersey - This content is produced and maintained by the Eclipse Jersey project. -* Project home: https://projects.eclipse.org/projects/ee4j.jersey +* Project home: https://projects.eclipse.org/projects/ee4j.jersey ## Trademarks - Eclipse Jersey is a trademark of the Eclipse Foundation. ## Copyright @@ -7218,99 +7265,65 @@ 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 -------------------------------------------- -License Identifier: EPL-2.0 --------------------------------------------- Fourth Party Dependencies -------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright &#169; 2019 Eclipse Foundation. All rights reserved.<br> - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) - Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "ServiceLocator Default Implementation" (org.glassfish.hk2:hk2-locator) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2019 Payara Service Ltd. and/or its affiliates. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "aopalliance version 1.0 repackaged as a module" (org.glassfish.hk2.external:aopalliance-repackaged) Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) + Copyright (C) 2009 The JSR-330 Expert Group + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"HK2 API module" org.glassfish.hk2:hk2-api) +"HK2 API module" (org.glassfish.hk2:hk2-api) Copyright (c) 2007,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "HK2 Implementation Utilities" (org.glassfish.hk2:hk2-utils) Copyright (c) 2007,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. - -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. - + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Javassist" (org.javassist:javassist) - Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.</i>]]></bottom> + Copyright (C) 1999-2020 by Shigeru Chiba, All rights reserved. Copyright (C) 2004 Bill Burke. All Rights Reserved. -License Identifier: Apache-2.0 + Apache License 2.0 -------------------------------------------- - 86885 + 92162 jersey-media-json-binding - 2.32 + 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE @@ -7327,9 +7340,36 @@ License Identifier: Apache-2.0 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. _________________________________________________ +# Notice for Jersey +This content is produced and maintained by the Eclipse Jersey project. -Copyright (c) 2017,2019 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 +* 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 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- @@ -7337,39 +7377,46 @@ Fourth Party Dependencies Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright &#169; 2019 Eclipse Foundation. All rights reserved.<br> - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) - Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) - Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Jakarta JSON Processing API (JSON-P) (jakarta.json:jakarta.json-api) + Copyright 2019 Eclipse Foundation. All rights reserved. + Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "JSON-P Default Provider" (org.glassfish:jakarta.json) -"JSON-P API" (jakarta.json:jakarta.json-api) Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "JSON-B API" (jakarta.json.bind:jakarta.json.bind-api) Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. Copyright &#169; 2019 Eclipse Foundation. All Rights Reserved.<br> - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. +"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) + Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"org.glassfish.hk2.external:jakarta.inject" + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"org.eclipse.yasson" (org.eclipse:yasson) + Copyright (c) 2019 IBM and/or its affiliates. All rights reserved. + Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2019 Payara Services and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 or Eclipse Distribution License 1.0 Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. @@ -7396,19 +7443,12 @@ 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.eclipse.yasson" (org.eclipse:yasson) - Copyright (c) 2019 IBM and/or its affiliates. All rights reserved. - Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. - Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2019 Payara Services and/or its affiliates. All rights reserved. - Eclipse Public License v. 2.0, Eclipse Distribution License v. 1.0 -------------------------------------------- - 86884 + 92163 jersey-media-json-processing - 2.32 + 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE @@ -7425,9 +7465,40 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. ____________________________________________ +jersey-media-json-processing (org.glassfish.jersey.media:jersey-media-json-processing) + Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +# Notice for Jersey +This content is produced and maintained by the Eclipse Jersey project. -Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 +* 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 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- @@ -7435,70 +7506,45 @@ Fourth Party Dependencies Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright &#169; 2019 Eclipse Foundation. All rights reserved.<br> - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) Copyright (C) 2009 The JSR-330 Expert Group Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "JSON-P Default Provider" (org.glassfish:jakarta.json) Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta JSON Processing Media for Jakarta RESTful Web Services" (org.glassfish:jsonp-jaxrs) Copyright (c) 2012,2019 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. - -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. +"JSON-P Default Provider" (org.glassfish:jakarta.json) + Copyright (c) 2011,2019 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- - 86886 + 92160 jersey-mp-rest-client - 2.32 + 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE @@ -7517,9 +7563,40 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. ___________________________________________________ -Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. -Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 +jersey-mp-rest-client (org.glassfish.jersey.ext.microprofile:jersey-mp-rest-client) + Copyright (c) 2019 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2019,2020 Oracle and/or its affiliates. All rights reserved. +-------------------------------------------- +# 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 -------------------------------------------- Fourth Party Dependencies -------------------------------------------- @@ -7557,7 +7634,7 @@ org.glassfish.jersey.media:jersey-media-jaxb Copyright (c) 2007,2019 Oracle and/or its affiliates. All rights reserved. EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -------------------------------------------- - "aopalliance version repackaged as a module" (org.glassfish.hk2.external:aopalliance-repackaged) + "aopalliance version repackaged as a module" (org.glassfish.hk2.external:aopalliance-repackaged) Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -------------------------------------------- @@ -7570,10 +7647,6 @@ org.glassfish.jersey.media:jersey-media-jaxb Copyright (c) 2012,2019 Oracle and/or its affiliates. All rights reserved. EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -------------------------------------------- -"org.osgi:org.osgi.annotation.versioning" (org.osgi:org.osgi.annotation.versioning) - Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. - Copyright (c) OSGi Alliance (2013). All Rights Reserved. --------------------------------------------- "Jakarta Interceptors" (jakarta.interceptor:jakarta.interceptor-api) Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. Copyright 2019 Eclipse Foundation. All rights reserved.<br> @@ -7596,19 +7669,16 @@ Jakarta Expression Language API (EL) (jakarta.el:jakarta.el-api) -------------------------------------------- "MicroProfile Rest Client API" (org.eclipse.microprofile.rest.client:microprofile-rest-client-api) Copyright (c) 2016-2019 Contributors to the Eclipse Foundation - Apache License 2.0 + Apache License Version 2.0 +-------------------------------------------- +"org.osgi:org.osgi.annotation.versioning" (org.osgi:org.osgi.annotation.versioning) + Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. + Copyright (c) OSGi Alliance (2013). All Rights Reserved. + Apache License Version 2.0 -------------------------------------------- MicroProfile Config (microprofile-config-api) Copyright (c) 2016-2020 Contributors to the Eclipse Foundation Apache License Version 2.0 - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). - - Portions of this software were originally based on the following: - Apache DeltaSpike Config - https://deltaspike.apache.org - under Apache License, v2.0 - This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -7622,7 +7692,7 @@ PackageName: Eclipse Microprofile PackageHomePage: http://www.eclipse.org/microprofile PackageLicenseDeclared: Apache-2.0 -PackageCopyrightText: +PackageCopyrightText: <text> Mark Struberg struberg@apache.org, Gerhard Petracek gpetracek@apache.org, Romain Manni-Bucau rmannibucau@apache.org, @@ -7641,12 +7711,6 @@ License Identifier: Apache-2.0 "Jakarta Bean Validation API" (jakarta.validation:jakarta.validation-api) Copyright &#169; 2019 Eclipse Foundation.<br> Apache License Version 2.0 - -Test dependencies: - - * [TestNG](https://github.com/cbeust/testng) - Apache License 2.0 - * [JCommander](https://github.com/cbeust/jcommander) - Apache License 2.0 - * [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/src) - Apache License 2.0 -------------------------------------------- Jakarta Contexts and Dependency Injection API (CDI API) (jakarta.enterprise:jakarta.enterprise.cdi-api) Copyright 2010, 2016, Red Hat, Inc., and individual contributors @@ -7654,7 +7718,6 @@ Jakarta Contexts and Dependency Injection API (CDI API) (jakarta.enterprise:jaka Copyright 2019 Eclipse Foundation. Copyright 2010,2013 2015, Red Hat, Inc., and individual contributors Apache License Version 2.0 - -------------------------------------------- "Jakarta XML Binding API" (jakarta.xml.bind:jakarta.xml.bind-api) Copyright (c) 2003,2020 Oracle and/or its affiliates. All rights reserved. @@ -7712,13 +7775,12 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. Copyright (C) 2004 Bill Burke. All Rights Reserved. Apache License 2.0 - - 86889 - jersey-server - 2.32 + 92158 + jersey-core-server + 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE @@ -7735,21 +7797,18 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. _________________________________________________ - - Copyright (c) 2000-2011 INRIA, France Telecom +jersey-core-server (org.glassfish.jersey.core:jersey-server) + Copyright (c) 2000-2011 INRIA, France Telecom Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. Copyright 2010,2013 Coda Hale and Yammer, Inc. - Copyright (c) 2000-2011 INRIA, France Telecom -------------------------------------------- # Notice for Jersey - This content is produced and maintained by the Eclipse Jersey project. -* Project home: https://projects.eclipse.org/projects/ee4j.jersey +* Project home: https://projects.eclipse.org/projects/ee4j.jersey ## Trademarks - Eclipse Jersey is a trademark of the Eclipse Foundation. ## Copyright @@ -7771,142 +7830,57 @@ 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 -------------------------------------------- -License Identifier: EPL-2.0 --------------------------------------------- Fourth Party Dependencies -------------------------------------------- +"jersey-core-client" (org.glassfish.jersey.core:jersey-client) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"jersey-core-client" (org.glassfish.jersey.core:jersey-client) - Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"jersey-media-jaxb" (org.glassfish.jersey.media:jersey-media-jaxb) - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright &#169; 2019 Eclipse Foundation. All rights reserved.<br> - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - -Eclipse Distribution License - v 1.0 Copyright (c) 2007, Eclipse Foundation, -Inc. and its licensors. - -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. - --------------------------------------------- -"Jakarta XML Binding API" (jakarta.xml.bind:jakarta.xml.bind-api) - Copyright (c) 2003,2020 Oracle and/or its affiliates. All rights reserved. - Copyright &#169; 2019, 2020 Eclipse Foundation. All rights reserved.<br> - Eclipse Distribution License - v 1.0 --------------------------------------------- -"Jakarta Activation API jar" (jakarta.activation:jakarta.activation-api) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - Eclipse Distribution License - v 1.0 + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Bean Validation API" (jakarta.validation:jakarta.validation-api) Copyright &#169; 2019 Eclipse Foundation.<br> - Apache License Version 2.0 - -# Notices for Eclipse Jakarta Bean Validation - -This content is produced and maintained by the Eclipse Jakarta Bean Validation -project. - -* Project home: https://projects.eclipse.org/projects/ee4j.bean-validation - -## Trademarks - - Jakarta Bean Validation 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 Apache License, Version 2.0 which is available at -https://www.apache.org/licenses/LICENSE-2.0. - -SPDX-License-Identifier: Apache-2.0 - -## Source Code - -The project maintains the following source code repositories: - - * [The specification repository](https://github.com/eclipse-ee4j/beanvalidation-spec) - * [The API repository](https://github.com/eclipse-ee4j/beanvalidation-api) - * [The TCK repository](https://github.com/eclipse-ee4j/beanvalidation-tck) - -## Third-party Content - -This project leverages the following third party content. - -Test dependencies: - - * [TestNG](https://github.com/cbeust/testng) - Apache License 2.0 - * [JCommander](https://github.com/cbeust/jcommander) - Apache License 2.0 - * [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/src) - Apache License 2.0 -License Identifier: Apache-2.0 + Apache License 2.0 + This program and the accompanying materials are made available under the terms + of the Apache License, Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0. -------------------------------------------- - 86887 - jersey-weld2-se - 2.32 + 92159 + jersey-ext-weld2-se + 2.33 Eclipse Foundation Eclipse Public License 2.0 + GPL v.2 with CPE @@ -7923,111 +7897,92 @@ License Identifier: Apache-2.0 3. Any provisions of the Oracle license agreement that differ from the Eclipse Public License are offered by Oracle alone and not by any other party. ______________________________________________________ - -Copyright (c) 2014,2020 Oracle and/or its affiliates. All rights reserved. -License Identifier: EPL-2.0 +jersey-ext-weld2-se (org.glassfish.jersey.ext.cdi:jersey-weld2-se) + Copyright (c) 2014,2020 Oracle and/or its affiliates. All rights reserved. -------------------------------------------- -"jersey-ext-cdi1x" (org.glassfish.jersey.ext.cdi:jersey-cdi1x) - Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2013,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +# 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 -------------------------------------------- -"jersey-core-client" (org.glassfish.jersey.core:jersey-client) - Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. - Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +Fourth Party Dependencies -------------------------------------------- "jersey-core-common" (org.glassfish.jersey.core:jersey-common) Copyright (c) 2007,2020 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018 Payara Foundation and/or its affiliates. Copyright (C) 2006,2014 The Guava Authors - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"jersey-media-jaxb" (org.glassfish.jersey.media:jersey-media-jaxb) - Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +"jersey-core-server" (org.glassfish.jersey.core:jersey-server) + Copyright (c) 2000-2011 INRIA, France Telecom + Copyright (c) 2018 Payara Foundation and/or its affiliates. + Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. + Copyright 2010,2013 Coda Hale and Yammer, Inc. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"jersey-server" (org.glassfish.jersey.core:jersey-server) - Copyright (c) 2000-2011 INRIA, France Telecom - Copyright (c) 2018 Payara Foundation and/or its affiliates. +"jersey-core-client" (org.glassfish.jersey.core:jersey-client) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2018,2019 Payara Foundation and/or its affiliates. Copyright (c) 2010,2020 Oracle and/or its affiliates. All rights reserved. - Copyright 2010,2013 Coda Hale and Yammer, Inc. - Copyright (c) 2000-2011 INRIA, France Telecom - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"jersey-ext-cdi1x" (org.glassfish.jersey.ext.cdi:jersey-cdi1x) + Copyright (c) 2018 Payara Foundation and/or its affiliates. All rights reserved. + Copyright (c) 2013,2020 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE +-------------------------------------------- +"org.glassfish.hk2.external:jakarta.inject" + Copyright (c) 2013,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "jakarta.ws.rs-api" (jakarta.ws.rs:jakarta.ws.rs-api) Copyright (c) 2010,2019 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2006 Google Inc. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) - Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) + "Jakarta Annotations API" (jakarta.annotation:jakarta.annotation-api) Copyright (c) 2005,2018 Oracle and/or its affiliates. All rights reserved. Copyright &#169; 2019 Eclipse Foundation. All rights reserved.<br> - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"javax.inject:1 as OSGi bundle" (org.glassfish.hk2.external:jakarta.inject) - Copyright (C) 2009 The JSR-330 Expert Group - Copyright (c) 2010,2018 Oracle and/or its affiliates. All rights reserved. - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- -"JSON-B API" (jakarta.json.bind:jakarta.json.bind-api) - Copyright (c) 2015,2019 Oracle and/or its affiliates. All rights reserved. - Copyright &#169; 2019 Eclipse Foundation. All Rights Reserved.<br> - EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 --------------------------------------------- -"Jakarta XML Binding API" (jakarta.xml.bind:jakarta.xml.bind-api) - Copyright (c) 2003,2020 Oracle and/or its affiliates. All rights reserved. - Copyright &#169; 2019, 2020 Eclipse Foundation. All rights reserved.<br> - Copyright (c) 2018 Payara Foundation and/or its affiliates. - Eclipse Distribution License - v 1.0 --------------------------------------------- -"Jakarta Activation" (com.sun.activation:jakarta.activation) - Copyright (c) 1997,2019 Oracle and/or its affiliates. All rights reserved. - Eclipse Distribution License - v 1.0 -Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. - -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. +"OSGi resource locator" (org.glassfish.hk2:osgi-resource-locator) + Copyright (c) 2009,2018 Oracle and/or its affiliates. All rights reserved. + Eclipse Public License 2.0 + GPL v.2 with CPE -------------------------------------------- "Jakarta Bean Validation API" (jakarta.validation:jakarta.validation-api) Copyright &#169; 2019 Eclipse Foundation.<br> - Apache License Version 2.0 + Apache License 2.0 + This program and the accompanying materials are made available under the terms + of the Apache License, Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0. License Identifier: Apache-2.0 +-------------------------------------------- @@ -8125,33 +8080,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - 82984 + 91598 netty - 4.1.51 + 4.1.58.Final The Netty Project Apache 2.0 helidon-webclient helidon-webserver - The Netty Project -netty-4.1.42.Final -Copyright 2012,2019 The Netty Project -Copyright 2011,2018 The Netty Project -Copyright 2014,2017 The Netty Project -Copyright 2012,2017 The Netty Project -Copyright 2012,2016 The Netty Project -Copyright 2014 Twitter, Inc. -Copyright (c) 2011, Joe Walnes and contributors -Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de> -Copyright (c) 2004-2011 QOS.ch - + + Copyright 2012,2020 The Netty Project + Copyright 2014 Twitter, Inc. + Copyright (c) 2011, Joe Walnes and contributors + Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de> + Copyright (c) 2004-2011 QOS.ch +-------------------------------------------- The Netty Project ================= Please visit the Netty web site for more information: - * http://netty.io/ + * https://netty.io/ Copyright 2014 The Netty Project @@ -8159,7 +8109,7 @@ The Netty Project licenses this file to you 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 + 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 @@ -8176,7 +8126,33 @@ This product contains the extensions to Java Collections Framework which has been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene: * LICENSE: - * Public Domain + * license/LICENSE.jsr166y.txt (Public Domain) +The person or persons who have associated work with this document (the +"Dedicator" or "Certifier") hereby either (a) certifies that, to the best of +his knowledge, the work of authorship identified is in the public domain of +the country from which the work is published, or (b) hereby dedicates whatever +copyright the dedicators holds in the work of authorship identified below (the +"Work") to the public domain. A certifier, moreover, dedicates any copyright +interest he may have in the associated work, and for these purposes, is +described as a "dedicator" below. + +A certifier has taken reasonable steps to verify the copyright status of this +work. Certifier recognizes that his good faith efforts may not shield him from +liability if in fact the work certified is not in the public domain. + +Dedicator makes this dedication for the benefit of the public at large and to +the detriment of the Dedicator's heirs and successors. Dedicator intends this +dedication to be an overt act of relinquishment in perpetuity of all present +and future rights under copyright law, whether vested or contingent, in the +Work. Dedicator understands that such relinquishment of all rights includes +the relinquishment of all rights to enforce (by lawsuit or otherwise) those +copyrights in the Work. + +Dedicator recognizes that, once placed in the public domain, the Work may be +freely reproduced, distributed, transmitted, used, modified, built upon, or +otherwise exploited by anyone for any purpose, commercial or non-commercial, +and in any way, including by methods that have not yet been invented or +conceived. * HOMEPAGE: * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/ * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/ @@ -8185,90 +8161,7 @@ This product contains a modified version of Robert Harder's Public Domain Base64 Encoder and Decoder, which can be obtained at: * LICENSE: - * Public Domain - * HOMEPAGE: - * http://iharder.sourceforge.net/current/java/base64/ - -This product contains a modified portion of 'Webbit', an event based -WebSocket and HTTP server, which can be obtained at: - - * COPYRIGHT: - Copyright (c) 2011, Joe Walnes, Aslak Hellesøy and contributors - All rights reserved. - * LICENSE: - * BSD License - * HOMEPAGE: - * https://github.com/joewalnes/webbit - -This product contains a modified portion of 'SLF4J', a simple logging -facade for Java, which can be obtained at: - - * COPYRIGHT: - Copyright (c) 2004-2007 QOS.ch - All rights reserved. - * LICENSE: - * MIT License - * HOMEPAGE: - * http://www.slf4j.org/ - -This product contains a modified portion of 'Apache Harmony', an open source -Java SE, which can be obtained at: - - * COPYRIGHT: - Copyright 2006, 2010 The Apache Software Foundation. - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). - * LICENSE: - * Apache License 2.0 - * HOMEPAGE: - * http://archive.apache.org/dist/harmony/ - -This product contains a modified portion of 'jbzip2', a Java bzip2 compression -and decompression library written by Matthew J. Francis. It can be obtained at: - - * COPYRIGHT: - Copyright (c) 2010-2011 Matthew J. Francis and Contributors of the jbzip2 Project - * LICENSE: - * MIT License - * HOMEPAGE: - * https://code.google.com/p/jbzip2/ - -This product contains a modified portion of 'libdivsufsort', a C API library to construct -the suffix array and the Burrows-Wheeler transformed string for any input string of -a constant-size alphabet written by Yuta Mori. It can be obtained at: - - * COPYRIGHT: - Copyright (c) 2003-2008 Yuta Mori All Rights Reserved. - * LICENSE: - * MIT License - * HOMEPAGE: - * https://github.com/y-256/libdivsufsort - -This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM, - which can be obtained at: - - * LICENSE: - * Apache License 2.0 - * HOMEPAGE: - * https://github.com/JCTools/JCTools - -This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data -interchange format, which can be obtained at: - - * COPYRIGHT: - Copyright 2013 Google Inc. All rights reserved. - Code generated by the Protocol Buffer compiler is owned by the owner - of the input file used when generating it. This code is not - standalone and requires a support library to be linked with it. This - support library is itself covered by the above license. - * LICENSE: - * New BSD License - * HOMEPAGE: - * https://github.com/google/protobuf - --------------------------------------------------------------------------------- -Public Domain - + * license/LICENSE.base64.txt (Public Domain) The person or persons who have associated work with this document (the "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of his knowledge, the work of authorship identified is in the public domain of @@ -8295,9 +8188,18 @@ freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. --------------------------------------------------------------------------------- -BSD License -http://www.opensource.org/licenses/bsd-license + * HOMEPAGE: + * http://iharder.sourceforge.net/current/java/base64/ + +This product contains a modified portion of 'Webbit', an event based +WebSocket and HTTP server, which can be obtained at: + + * LICENSE: + * license/LICENSE.webbit.txt (BSD License) +(BSD License: https://www.opensource.org/licenses/bsd-license) + +Copyright (c) 2011, Joe Walnes, Aslak Hellesøy and contributors +All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the @@ -8331,8 +8233,231 @@ 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. --------------------------------------------------------------------------------- -New BSD License + * HOMEPAGE: + * https://github.com/joewalnes/webbit + +This product contains a modified portion of 'SLF4J', a simple logging +facade for Java, which can be obtained at: + + * LICENSE: + * license/LICENSE.slf4j.txt (MIT License) +/* + * Copyright (c) 2004-2007 QOS.ch + * 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. + */ + * HOMEPAGE: + * https://www.slf4j.org/ + +This product contains a modified portion of 'Apache Harmony', an open source +Java SE, which can be obtained at: + + * NOTICE: + * license/NOTICE.harmony.txt +Apache Harmony + +Copyright 2006, 2010 The Apache Software Foundation. + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). + * LICENSE: + * license/LICENSE.harmony.txt (Apache License 2.0) + + * HOMEPAGE: + * https://archive.apache.org/dist/harmony/ + +This product contains a modified portion of 'jbzip2', a Java bzip2 compression +and decompression library written by Matthew J. Francis. It can be obtained at: + + * LICENSE: + * license/LICENSE.jbzip2.txt (MIT License) +Copyright (c) 2010-2011 Matthew J. Francis and Contributors of the jbzip2 Project + +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. + * HOMEPAGE: + * https://code.google.com/p/jbzip2/ + +This product contains a modified portion of 'libdivsufsort', a C API library to construct +the suffix array and the Burrows-Wheeler transformed string for any input string of +a constant-size alphabet written by Yuta Mori. It can be obtained at: + + * LICENSE: + * license/LICENSE.libdivsufsort.txt (MIT License) +Copyright (c) 2003-2008 Yuta Mori 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. + * HOMEPAGE: + * https://github.com/y-256/libdivsufsort + +This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM, + which can be obtained at: + + * LICENSE: + * license/LICENSE.jctools.txt (ASL2 License) + * HOMEPAGE: + * https://github.com/JCTools/JCTools + +This product optionally depends on 'JZlib', a re-implementation of zlib in +pure Java, which can be obtained at: + + * LICENSE: + * license/LICENSE.jzlib.txt (BSD style License) +Copyright (c) 2000,2001,2002,2003,2004 ymnk, JCraft,Inc. 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 the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 JCRAFT, +INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE 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. + * HOMEPAGE: + * http://www.jcraft.com/jzlib/ + +This product optionally depends on 'Compress-LZF', a Java library for encoding and +decoding data in LZF format, written by Tatu Saloranta. It can be obtained at: + + * LICENSE: + * license/LICENSE.compress-lzf.txt (Apache License 2.0) +Copyright 2009-2010 Ning, Inc. + +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. + * HOMEPAGE: + * https://github.com/ning/compress + +This product optionally depends on 'lz4', a LZ4 Java compression +and decompression library written by Adrien Grand. It can be obtained at: + + * LICENSE: + * license/LICENSE.lz4.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jpountz/lz4-java + +This product optionally depends on 'lzma-java', a LZMA Java compression +and decompression library, which can be obtained at: + + * LICENSE: + * license/LICENSE.lzma-java.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jponge/lzma-java + +This product contains a modified portion of 'jfastlz', a Java port of FastLZ compression +and decompression library written by William Kinney. It can be obtained at: + + * LICENSE: + * license/LICENSE.jfastlz.txt (MIT License) +The MIT License + +Copyright (c) 2009 William Kinney + +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. + * HOMEPAGE: + * https://code.google.com/p/jfastlz/ + +This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data +interchange format, which can be obtained at: + + * LICENSE: + * license/LICENSE.protobuf.txt (New BSD License) +Protocol Buffers - Google's data interchange format +Copyright 2013 Google Inc. All rights reserved. +https://developers.google.com/protocol-buffers/ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -8359,8 +8484,111 @@ 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. --------------------------------------------------------------------------------- -MIT License + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + * HOMEPAGE: + * https://github.com/google/protobuf + +This product optionally depends on 'Snappy', a compression library produced +by Google Inc, which can be obtained at: + + * LICENSE: + * license/LICENSE.snappy.txt (New BSD License) +Copyright 2011, Google Inc. +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 Google 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. + * HOMEPAGE: + * https://github.com/google/snappy + +This product optionally depends on 'JBoss Marshalling', an alternative Java +serialization API, which can be obtained at: + + * LICENSE: + * license/LICENSE.jboss-marshalling.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jboss-remoting/jboss-marshalling + +This product optionally depends on 'Apache Commons Logging', a logging +framework, which can be obtained at: + + * LICENSE: + * license/LICENSE.commons-logging.txt (Apache License 2.0) + * HOMEPAGE: + * https://commons.apache.org/logging/ + +This product optionally depends on 'Apache Log4J', a logging framework, which +can be obtained at: + + * LICENSE: + * license/LICENSE.log4j.txt (Apache License 2.0) + * HOMEPAGE: + * https://logging.apache.org/log4j/ + +This product optionally depends on 'Aalto XML', an ultra-high performance +non-blocking XML processor, which can be obtained at: + + * LICENSE: + * license/LICENSE.aalto-xml.txt (Apache License 2.0) +This copy of Aalto XML processor 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 derivate works. + +You may obtain a copy of the License at: + +https://www.apache.org/licenses/ + +A copy is also included with both the the downloadable source code package +and jar that contains class bytecodes, as file "ASL 2.0". In both cases, +that file should be located next to this file: in source distribution +the location should be "release-notes/asl"; and in jar "META-INF/" + * HOMEPAGE: + * http://wiki.fasterxml.com/AaltoHome + +This product contains a modified version of 'HPACK', a Java implementation of +the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at: + + * LICENSE: + * license/LICENSE.hpack.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/twitter/hpack + +This product contains a modified version of 'HPACK', a Java implementation of +the HTTP/2 HPACK algorithm written by Cory Benfield. It can be obtained at: + + * LICENSE: + * license/LICENSE.hyper-hpack.txt (MIT License) +The MIT License (MIT) + +Copyright (c) 2014 Cory Benfield Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -8379,9 +8607,48 @@ 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. --------------------------------------------------------------------------------- -License Identifier: Apache-2.0 --------------------------------------------------------------------------------- + * HOMEPAGE: + * https://github.com/python-hyper/hpack/ + +This product contains a modified version of 'HPACK', a Java implementation of +the HTTP/2 HPACK algorithm written by Tatsuhiro Tsujikawa. It can be obtained at: + + * LICENSE: + * license/LICENSE.nghttp2-hpack.txt (MIT License) +The MIT License + +Copyright (c) 2012, 2014, 2015, 2016 Tatsuhiro Tsujikawa +Copyright (c) 2012, 2014, 2015, 2016 nghttp2 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. + * HOMEPAGE: + * https://github.com/nghttp2/nghttp2/ + +This product contains a modified portion of 'Apache Commons Lang', a Java library +provides utilities for the java.lang API, which can be obtained at: + + * LICENSE: + * license/LICENSE.commons-lang.txt (Apache License 2.0) + * HOMEPAGE: + * https://commons.apache.org/proper/commons-lang/ + diff --git a/examples/employee-app/app.yaml b/examples/employee-app/app.yaml index b4d8750b902..7e2a29e9095 100644 --- a/examples/employee-app/app.yaml +++ b/examples/employee-app/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2019-2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,8 +29,8 @@ spec: targetPort: 8080 name: http --- +apiVersion: apps/v1 kind: Deployment -apiVersion: extensions/v1beta1 metadata: name: helidon-examples-employee-app spec: @@ -42,11 +42,11 @@ spec: version: v1 spec: containers: - - name: helidon-examples-employee-app - image: helidon-examples-employee-app - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 + - name: helidon-examples-employee-app + image: helidon-examples-employee-app + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 --- apiVersion: v1 kind: Service @@ -60,5 +60,4 @@ spec: - port: 80 targetPort: 8080 selector: - app: helidon-examples-employee-app - \ No newline at end of file + app: helidon-examples-employee-app \ No newline at end of file diff --git a/examples/integrations/cdi/jedis/README.md b/examples/integrations/cdi/jedis/README.md index 41c3810f3a5..51311df18e2 100644 --- a/examples/integrations/cdi/jedis/README.md +++ b/examples/integrations/cdi/jedis/README.md @@ -33,7 +33,9 @@ curl http://localhost:8080/jedis/foo ```bash docker build -t helidon-examples-integrations-cdi-jedis . -kubectl apply -f ../../k8s/ingress.yaml -f app.yaml +kubectl apply \ + -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/ingress-nginx-3.15.2/deploy/static/provider/cloud/deploy.yaml \ + -f app.yaml ``` Try the endpoint: @@ -49,5 +51,5 @@ docker stop redis helidon-examples-integrations-cdi-jedis Delete the Kubernetes resources: ```bash -kubectl delete -f ../../k8s/ingress.yaml -f app.yaml +kubectl delete -f app.yaml ``` diff --git a/examples/integrations/cdi/jedis/app.yaml b/examples/integrations/cdi/jedis/app.yaml index 5a3c2b51062..3f812ae47ea 100644 --- a/examples/integrations/cdi/jedis/app.yaml +++ b/examples/integrations/cdi/jedis/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,29 +14,32 @@ # limitations under the License. # ---- +apiVersion: apps/v1 kind: Deployment -apiVersion: extensions/v1beta1 metadata: name: helidon-examples-integrations-cdi-jedis + labels: + app: helidon-examples-integrations-cdi-jedis + version: v1 spec: replicas: 1 template: metadata: labels: app: helidon-examples-integrations-cdi-jedis - version: v1 spec: containers: - - name: helidon-examples-integrations-cdi-jedis - image: helidon-examples-integrations-cdi-jedis - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 - env: - - name: redis_clients_jedis_JedisPool_default_host - value: redis + - name: helidon-examples-integrations-cdi-jedis + image: helidon-examples-integrations-cdi-jedis + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 + env: + - name: redis_clients_jedis_JedisPool_default_host + value: redis + --- + kind: Service apiVersion: v1 metadata: @@ -51,8 +54,10 @@ spec: selector: app: helidon-examples-integrations-cdi-jedis sessionAffinity: None + --- -apiVersion: extensions/v1beta1 + +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: helidon-examples-integrations-cdi-jedis @@ -60,10 +65,13 @@ metadata: nginx.ingress.kubernetes.io/rewrite-target: /$1 spec: rules: - - host: localhost - http: - paths: - - path: /helidon-cdi-jedis/(.*) - backend: - serviceName: helidon-examples-integrations-cdi-jedis - servicePort: 8080 \ No newline at end of file + - host: localhost + http: + paths: + - path: /helidon-cdi-jedis/(.*) + pathType: Prefix + backend: + service: + name: helidon-examples-integrations-cdi-jedis + port: + number: 8080 diff --git a/examples/integrations/cdi/jedis/redis.yaml b/examples/integrations/cdi/jedis/redis.yaml index d1f32711ef1..045c4a1553b 100644 --- a/examples/integrations/cdi/jedis/redis.yaml +++ b/examples/integrations/cdi/jedis/redis.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2019-2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,10 +29,12 @@ spec: --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: redis + labels: + app: redis spec: replicas: 1 template: @@ -41,8 +43,8 @@ spec: app: redis spec: containers: - - name: redis - image: redis:5 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 6379 + - name: redis + image: redis:5 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 6379 diff --git a/examples/integrations/cdi/oci-objectstorage/README.md b/examples/integrations/cdi/oci-objectstorage/README.md index bc8c4576702..d460b6680e6 100644 --- a/examples/integrations/cdi/oci-objectstorage/README.md +++ b/examples/integrations/cdi/oci-objectstorage/README.md @@ -53,7 +53,9 @@ curl http://localhost:8080/logo/{namespaceName}/{bucketName}/{objectName} ```bash docker build -t helidon-examples-integrations-cdi-oci-objectstorage . ./oci-setup.sh -k8s -kubectl apply -f ../../../k8s/ingress.yaml -f app.yaml +kubectl apply \ + -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/ingress-nginx-3.15.2/deploy/static/provider/cloud/deploy.yaml \ + -f app.yaml ``` Try the endpoint: @@ -69,5 +71,5 @@ docker stop helidon-examples-integrations-cdi-oci-objectstorage Delete the Kubernetes resources: ```bash -kubectl delete -f ../../../k8s/ingress.yaml -f app.yaml +kubectl -f app.yaml ``` diff --git a/examples/integrations/cdi/oci-objectstorage/app.yaml b/examples/integrations/cdi/oci-objectstorage/app.yaml index 45cca1b516b..a501135de0b 100644 --- a/examples/integrations/cdi/oci-objectstorage/app.yaml +++ b/examples/integrations/cdi/oci-objectstorage/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,8 +14,8 @@ # limitations under the License. # +apiVersion: apps/v1 kind: Deployment -apiVersion: extensions/v1beta1 metadata: name: helidon-examples-integrations-cdi-oci-objectstorage spec: @@ -24,51 +24,52 @@ spec: metadata: labels: app: helidon-examples-integrations-cdi-oci-objectstorage - version: v1 spec: containers: - - name: helidon-examples-integrations-cdi-oci-objectstorage - image: helidon-examples-integrations-cdi-oci-objectstorage - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 - env: - - name: OCI_AUTH_FINGERPRINT - valueFrom: - secretKeyRef: - name: oci-objectstorage-secret - key: OCI_AUTH_FINGERPRINT - - name: OCI_AUTH_PASSPHRASE - valueFrom: - secretKeyRef: - name: oci-objectstorage-secret - key: OCI_AUTH_PASSPHRASE - - name: OCI_AUTH_PRIVATEKEY - valueFrom: - secretKeyRef: - name: oci-objectstorage-secret - key: OCI_AUTH_PRIVATEKEY - - name: OCI_AUTH_TENANCY - valueFrom: - secretKeyRef: - name: oci-objectstorage-secret - key: OCI_AUTH_TENANCY - - name: OCI_AUTH_USER - valueFrom: - secretKeyRef: - name: oci-objectstorage-secret - key: OCI_AUTH_USER - - name: OCI_OBJECTSTORAGE_COMPARTMENT - valueFrom: - secretKeyRef: - name: oci-objectstorage-secret - key: OCI_OBJECTSTORAGE_COMPARTMENT - - name: OCI_OBJECTSTORAGE_REGION - valueFrom: - secretKeyRef: - name: oci-objectstorage-secret - key: OCI_OBJECTSTORAGE_REGION + - name: helidon-examples-integrations-cdi-oci-objectstorage + image: helidon-examples-integrations-cdi-oci-objectstorage + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 + env: + - name: OCI_AUTH_FINGERPRINT + valueFrom: + secretKeyRef: + key: OCI_AUTH_FINGERPRINT + name: oci-objectstorage-secret + - name: OCI_AUTH_PASSPHRASE + valueFrom: + secretKeyRef: + key: OCI_AUTH_PASSPHRASE + name: oci-objectstorage-secret + - name: OCI_AUTH_PRIVATEKEY + valueFrom: + secretKeyRef: + key: OCI_AUTH_PRIVATEKEY + name: oci-objectstorage-secret + - name: OCI_AUTH_TENANCY + valueFrom: + secretKeyRef: + key: OCI_AUTH_TENANCY + name: oci-objectstorage-secret + - name: OCI_AUTH_USER + valueFrom: + secretKeyRef: + key: OCI_AUTH_USER + name: oci-objectstorage-secret + - name: OCI_OBJECTSTORAGE_COMPARTMENT + valueFrom: + secretKeyRef: + key: OCI_OBJECTSTORAGE_COMPARTMENT + name: oci-objectstorage-secret + - name: OCI_OBJECTSTORAGE_REGION + valueFrom: + secretKeyRef: + key: OCI_OBJECTSTORAGE_REGION + name: oci-objectstorage-secret + --- + kind: Service apiVersion: v1 metadata: @@ -83,9 +84,10 @@ spec: selector: app: helidon-examples-integrations-cdi-oci-objectstorage sessionAffinity: None + --- -apiVersion: extensions/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: helidon-examples-integrations-cdi-oci-objectstorage @@ -93,10 +95,13 @@ metadata: nginx.ingress.kubernetes.io/rewrite-target: /$1 spec: rules: - - host: localhost - http: - paths: - - path: /oci-objectstorage/(.*) - backend: - serviceName: helidon-examples-integrations-cdi-oci-objectstorage - servicePort: 8080 \ No newline at end of file + - host: localhost + http: + paths: + - path: /oci-objectstorage/(.*) + pathType: Prefix + backend: + service: + name: helidon-examples-integrations-cdi-oci-objectstorage + port: + number: 8080 diff --git a/examples/k8s/ingress.yaml b/examples/k8s/ingress.yaml deleted file mode 100644 index fc255104446..00000000000 --- a/examples/k8s/ingress.yaml +++ /dev/null @@ -1,307 +0,0 @@ -# -# Copyright (c) 2019 Oracle and/or its affiliates. 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 -# -# 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. -# - -apiVersion: v1 -kind: Namespace -metadata: - name: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- - -kind: ConfigMap -apiVersion: v1 -metadata: - name: nginx-configuration - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: tcp-services - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: udp-services - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - name: nginx-ingress-clusterrole - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -rules: - - apiGroups: - - "" - resources: - - configmaps - - endpoints - - nodes - - pods - - secrets - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - nodes - verbs: - - get - - apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "extensions" - - "networking.k8s.io" - resources: - - ingresses - verbs: - - get - - list - - watch - - apiGroups: - - "extensions" - - "networking.k8s.io" - resources: - - ingresses/status - verbs: - - update - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: Role -metadata: - name: nginx-ingress-role - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -rules: - - apiGroups: - - "" - resources: - - configmaps - - pods - - secrets - - namespaces - verbs: - - get - - apiGroups: - - "" - resources: - - configmaps - resourceNames: - # Defaults to "-" - # Here: "-" - # This has to be adapted if you change either parameter - # when launching the nginx-ingress-controller. - - "ingress-controller-leader-nginx" - verbs: - - get - - update - - apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - apiGroups: - - "" - resources: - - endpoints - verbs: - - get - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: RoleBinding -metadata: - name: nginx-ingress-role-nisa-binding - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: nginx-ingress-role -subjects: - - kind: ServiceAccount - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: nginx-ingress-clusterrole-nisa-binding - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: nginx-ingress-clusterrole -subjects: - - kind: ServiceAccount - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - ---- - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nginx-ingress-controller - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - template: - metadata: - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - annotations: - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - spec: - serviceAccountName: nginx-ingress-serviceaccount - containers: - - name: nginx-ingress-controller - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1 - args: - - /nginx-ingress-controller - - --configmap=$(POD_NAMESPACE)/nginx-configuration - - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services - - --udp-services-configmap=$(POD_NAMESPACE)/udp-services - - --publish-service=$(POD_NAMESPACE)/ingress-nginx - - --annotations-prefix=nginx.ingress.kubernetes.io - securityContext: - allowPrivilegeEscalation: true - capabilities: - drop: - - ALL - add: - - NET_BIND_SERVICE - # www-data -> 33 - runAsUser: 33 - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - ports: - - name: http - containerPort: 80 - - name: https - containerPort: 443 - livenessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: 10254 - scheme: HTTP - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 10 - readinessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: 10254 - scheme: HTTP - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 10 - ---- - -kind: Service -apiVersion: v1 -metadata: - name: ingress-nginx - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - externalTrafficPolicy: Local - type: LoadBalancer - selector: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https - ---- diff --git a/examples/k8s/zipkin.yaml b/examples/k8s/zipkin.yaml index e6770d1a4cf..2da2f614fa2 100644 --- a/examples/k8s/zipkin.yaml +++ b/examples/k8s/zipkin.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2019-2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,13 +14,16 @@ # limitations under the License. # -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: zipkin labels: app: zipkin spec: + selector: + matchLabels: + app: zipkin replicas: 1 template: metadata: @@ -28,12 +31,11 @@ spec: app: zipkin spec: containers: - - image: openzipkin/zipkin:2 - imagePullPolicy: Always - name: zipkin - ports: - - containerPort: 9411 - restartPolicy: Always + - name: zipkin + image: openzipkin/zipkin:2 + imagePullPolicy: Always + ports: + - containerPort: 9411 --- apiVersion: v1 @@ -53,16 +55,19 @@ spec: --- -apiVersion: extensions/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: zipkin-ingress spec: rules: - - host: localhost - http: - paths: - - path: /zipkin - backend: - serviceName: zipkin - servicePort: 9411 + - host: localhost + http: + paths: + - path: /zipkin + pathType: Prefix + backend: + service: + name: zipkin + port: + number: 9411 diff --git a/examples/quickstarts/helidon-quickstart-mp/app.yaml b/examples/quickstarts/helidon-quickstart-mp/app.yaml index 58099afcf00..16dd9668e41 100644 --- a/examples/quickstarts/helidon-quickstart-mp/app.yaml +++ b/examples/quickstarts/helidon-quickstart-mp/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,12 +29,20 @@ spec: targetPort: 8080 name: http --- + +apiVersion: apps/v1 kind: Deployment -apiVersion: extensions/v1beta1 metadata: name: helidon-quickstart-mp + labels: + app: helidon-quickstart-mp + version: v1 spec: replicas: 1 + selector: + matchLabels: + app: helidon-quickstart-mp + version: v1 template: metadata: labels: @@ -42,9 +50,8 @@ spec: version: v1 spec: containers: - - name: helidon-quickstart-mp - image: helidon-quickstart-mp - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 ---- + - name: helidon-quickstart-mp + image: helidon-quickstart-mp + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 diff --git a/examples/quickstarts/helidon-quickstart-se/app.yaml b/examples/quickstarts/helidon-quickstart-se/app.yaml index 7b84daac617..e5aa643c878 100644 --- a/examples/quickstarts/helidon-quickstart-se/app.yaml +++ b/examples/quickstarts/helidon-quickstart-se/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,12 +29,20 @@ spec: targetPort: 8080 name: http --- + +apiVersion: apps/v1 kind: Deployment -apiVersion: extensions/v1beta1 metadata: name: helidon-quickstart-se + labels: + app: helidon-quickstart-se + version: v1 spec: replicas: 1 + selector: + matchLabels: + app: helidon-quickstart-se + version: v1 template: metadata: labels: @@ -42,9 +50,8 @@ spec: version: v1 spec: containers: - - name: helidon-quickstart-se - image: helidon-quickstart-se - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 ---- + - name: helidon-quickstart-se + image: helidon-quickstart-se + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 diff --git a/examples/quickstarts/helidon-standalone-quickstart-mp/app.yaml b/examples/quickstarts/helidon-standalone-quickstart-mp/app.yaml index 960765b884c..7d330579c02 100644 --- a/examples/quickstarts/helidon-standalone-quickstart-mp/app.yaml +++ b/examples/quickstarts/helidon-standalone-quickstart-mp/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,34 +17,41 @@ kind: Service apiVersion: v1 metadata: - name: helidon-standalone-quickstart-mp + name: helidon-quickstart-mp labels: - app: helidon-standalone-quickstart-mp + app: helidon-quickstart-mp spec: type: NodePort selector: - app: helidon-standalone-quickstart-mp + app: helidon-quickstart-mp ports: - - port: 8080 - targetPort: 8080 - name: http + - port: 8080 + targetPort: 8080 + name: http --- + +apiVersion: apps/v1 kind: Deployment -apiVersion: extensions/v1beta1 metadata: - name: helidon-standalone-quickstart-mp + name: helidon-quickstart-mp + labels: + app: helidon-quickstart-mp + version: v1 spec: replicas: 1 + selector: + matchLabels: + app: helidon-quickstart-mp + version: v1 template: metadata: labels: - app: helidon-standalone-quickstart-mp + app: helidon-quickstart-mp version: v1 spec: containers: - - name: helidon-standalone-quickstart-mp - image: helidon-standalone-quickstart-mp - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 ---- + - name: helidon-quickstart-mp + image: helidon-quickstart-mp + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 diff --git a/examples/quickstarts/helidon-standalone-quickstart-se/app.yaml b/examples/quickstarts/helidon-standalone-quickstart-se/app.yaml index 44709c4c7b4..00fdab888f6 100644 --- a/examples/quickstarts/helidon-standalone-quickstart-se/app.yaml +++ b/examples/quickstarts/helidon-standalone-quickstart-se/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,34 +17,41 @@ kind: Service apiVersion: v1 metadata: - name: helidon-standalone-quickstart-se + name: helidon-quickstart-se labels: - app: helidon-standalone-quickstart-se + app: helidon-quickstart-se spec: type: NodePort selector: - app: helidon-standalone-quickstart-se + app: helidon-quickstart-se ports: - - port: 8080 - targetPort: 8080 - name: http + - port: 8080 + targetPort: 8080 + name: http --- + +apiVersion: apps/v1 kind: Deployment -apiVersion: extensions/v1beta1 metadata: - name: helidon-standalone-quickstart-se + name: helidon-quickstart-se + labels: + app: helidon-quickstart-se + version: v1 spec: replicas: 1 + selector: + matchLabels: + app: helidon-quickstart-se + version: v1 template: metadata: labels: - app: helidon-standalone-quickstart-se + app: helidon-quickstart-se version: v1 spec: containers: - - name: helidon-standalone-quickstart-se - image: helidon-standalone-quickstart-se - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 ---- + - name: helidon-quickstart-se + image: helidon-quickstart-se + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 diff --git a/examples/todo-app/README.md b/examples/todo-app/README.md index e4d00ad497d..d012398ac2d 100644 --- a/examples/todo-app/README.md +++ b/examples/todo-app/README.md @@ -25,7 +25,9 @@ docker run --name zipkin -d -p 9411:9411 openzipkin/zipkin With Kubernetes: ```bash -kubectl apply -f ../k8s/ingress.yaml -f ../k8s/zipkin.yaml +kubectl apply \ + -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/ingress-nginx-3.15.2/deploy/static/provider/cloud/deploy.yaml \ + -f ../k8s/zipkin.yaml ``` ## Build and run @@ -76,8 +78,6 @@ docker stop zipkin \ Delete the Kubernetes resources: ```bash kubectl delete \ - -f ../k8s/ingress.yaml \ - -f ../k8s/zipkin.yaml \ -f cassandra.yaml \ -f backend/app.yaml \ -f frontend/app.yaml diff --git a/examples/todo-app/backend/app.yaml b/examples/todo-app/backend/app.yaml index 47291eb435c..8cccee662d0 100644 --- a/examples/todo-app/backend/app.yaml +++ b/examples/todo-app/backend/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2019-2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -30,10 +30,12 @@ data: --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: helidon-examples-todo-backend + labels: + app: helidon-examples-todo-backend spec: replicas: 1 template: @@ -42,18 +44,18 @@ spec: app: helidon-examples-todo-backend spec: containers: - - name: helidon-examples-todo-backend - image: helidon-examples-todo-backend - imagePullPolicy: Never - ports: - - containerPort: 8854 - volumeMounts: - - name: config-volume - mountPath: /conf + - name: helidon-examples-todo-backend + image: helidon-examples-todo-backend + imagePullPolicy: Never + ports: + - containerPort: 8854 + volumeMounts: + - mountPath: /conf + name: config-volume volumes: - - name: config-volume - configMap: - name: helidon-examples-todo-backend + - name: config-volume + configMap: + name: helidon-examples-todo-backend --- diff --git a/examples/todo-app/backend/pom.xml b/examples/todo-app/backend/pom.xml index 1f1e40dd184..0faeeb7b7fe 100644 --- a/examples/todo-app/backend/pom.xml +++ b/examples/todo-app/backend/pom.xml @@ -1,7 +1,7 @@ - - com.google.guava - guava - diff --git a/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/DbService.java b/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/DbService.java index 6f29d5e852d..a65a15eb177 100644 --- a/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/DbService.java +++ b/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/DbService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. 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. @@ -119,7 +119,8 @@ public class DbService { */ @Inject public DbService(final Config config) { - Cluster.Builder clusterBuilder = Cluster.builder(); + Cluster.Builder clusterBuilder = Cluster.builder() + .withoutMetrics(); Config cConfig = config.get("cassandra"); cConfig.get("servers").asList(Config.class).get().forEach(serverConfig -> { diff --git a/examples/todo-app/backend/src/main/resources/application.yaml b/examples/todo-app/backend/src/main/resources/application.yaml index 522e2529332..906e24170b0 100644 --- a/examples/todo-app/backend/src/main/resources/application.yaml +++ b/examples/todo-app/backend/src/main/resources/application.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. 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. @@ -39,7 +39,6 @@ security: - name: "http-signatures" providers: - google-login: - proxy-host: "www-proxy-brmdc.us.oracle.com" client-id: "1048216952820-6a6ke9vrbjlhngbc0al0dkj9qs9tqbk2.apps.googleusercontent.com" - abac: - http-signatures: diff --git a/examples/todo-app/cassandra.yaml b/examples/todo-app/cassandra.yaml index c64802396bf..8f4d2cead0b 100644 --- a/examples/todo-app/cassandra.yaml +++ b/examples/todo-app/cassandra.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2019-2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,20 +29,26 @@ spec: --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: helidon-examples-todo-cassandra + labels: + app: helidon-examples-todo-cassandra spec: replicas: 1 + selector: + matchLabels: + app: helidon-examples-todo-cassandra template: metadata: labels: app: helidon-examples-todo-cassandra spec: containers: - - name: todo-cassandra-container - image: helidon-examples-todo-cassandra - imagePullPolicy: Never - ports: - - containerPort: 9042 + - name: todo-cassandra-container + image: helidon-examples-todo-cassandra + imagePullPolicy: Never + ports: + - containerPort: 9042 + restartPolicy: Always diff --git a/examples/todo-app/frontend/app.yaml b/examples/todo-app/frontend/app.yaml index d0d8e9963fd..c7c1f59d313 100644 --- a/examples/todo-app/frontend/app.yaml +++ b/examples/todo-app/frontend/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2019-2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -26,10 +26,12 @@ data: backend.endpoint: http://helidon-examples-todo-backend:8854 --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: helidon-examples-todo-frontend + labels: + app: helidon-examples-todo-frontend spec: replicas: 1 template: @@ -38,18 +40,18 @@ spec: app: helidon-examples-todo-frontend spec: containers: - - name: helidon-examples-todo-frontend - image: helidon-examples-todo-frontend - imagePullPolicy: Never - ports: - - containerPort: 8080 - volumeMounts: - - name: config-volume - mountPath: /conf - volumes: - - name: config-volume - configMap: + - image: helidon-examples-todo-frontend + imagePullPolicy: Never name: helidon-examples-todo-frontend + ports: + - containerPort: 8080 + volumeMounts: + - mountPath: /conf + name: config-volume + volumes: + - name: config-volume + configMap: + name: helidon-examples-todo-frontend --- @@ -67,18 +69,21 @@ spec: sessionAffinity: None --- -apiVersion: extensions/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: + name: helidon-examples-todo-frontend annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1 - name: helidon-examples-todo-frontend spec: rules: - - host: localhost - http: - paths: - - path: /todo/(.*) - backend: - serviceName: helidon-examples-todo-frontend - servicePort: 8080 \ No newline at end of file + - host: localhost + http: + paths: + - path: /todo/(.*) + pathType: Prefix + backend: + service: + name: helidon-examples-todo-frontend + port: + number: 8080 diff --git a/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java b/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java index 2cfb24a099d..c896ea2b9fb 100644 --- a/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java +++ b/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -124,7 +124,7 @@ private static Routing createRouting(final Security security, // register metrics features (on "/metrics") .register(MetricsSupport.create()) // register security features - .register(WebSecurity.create(security, config)) + .register(WebSecurity.create(security, config.get("security"))) // register static content support (on "/") .register(StaticContentSupport.builder("/WEB").welcomeFileName("index.html")) // register API handler (on "/api") - this path is secured (see application.yaml) diff --git a/examples/todo-app/frontend/src/main/resources/application.yaml b/examples/todo-app/frontend/src/main/resources/application.yaml index 336c73dbbb2..770574b3f85 100644 --- a/examples/todo-app/frontend/src/main/resources/application.yaml +++ b/examples/todo-app/frontend/src/main/resources/application.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2021 Oracle and/or its affiliates. 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. @@ -39,6 +39,9 @@ security: providers: - google-login: client-id: "1048216952820-6a6ke9vrbjlhngbc0al0dkj9qs9tqbk2.apps.googleusercontent.com" + outbound: + - name: "backend" + hosts: [ "localhost", "helidon-examples-todo-backend" ] - abac: - http-signatures: outbound: @@ -49,5 +52,5 @@ security: hmac.secret: "${CLEAR=frontend2backend}" web-server: paths: - - path: "/api/[{*}]" + - path: "/api/{+}" authenticate: true diff --git a/examples/translator-app/README.md b/examples/translator-app/README.md index f5fcfb21de9..1a5f18afdbf 100644 --- a/examples/translator-app/README.md +++ b/examples/translator-app/README.md @@ -18,7 +18,9 @@ java -jar zipkin.jar With Kubernetes: ```bash -kubectl apply -f ../k8s/ingress.yaml -f ../k8s/zipkin.yaml +kubectl apply \ + -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/ingress-nginx-3.15.2/deploy/static/provider/cloud/deploy.yaml \ + -f ../k8s/zipkin.yaml ``` ## Build and run diff --git a/examples/translator-app/backend/app.yaml b/examples/translator-app/backend/app.yaml index 33be877c8b5..8b5b06b3389 100644 --- a/examples/translator-app/backend/app.yaml +++ b/examples/translator-app/backend/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2017, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2017, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ # limitations under the License. # -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: helidon-examples-translator-backend @@ -28,15 +28,14 @@ spec: app: helidon-examples-translator-backend spec: containers: - - image: helidon-examples-translator-backend:latest - imagePullPolicy: IfNotPresent - name: helidon-examples-translator-backend - ports: - - containerPort: 9080 - env: - - name: tracing.host - value: "zipkin" - restartPolicy: Always + - name: helidon-examples-translator-backend + image: helidon-examples-translator-backend:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 9080 + env: + - name: tracing.host + value: zipkin --- apiVersion: v1 diff --git a/examples/translator-app/frontend/app.yaml b/examples/translator-app/frontend/app.yaml index b24f1639adf..c9359dd25b2 100644 --- a/examples/translator-app/frontend/app.yaml +++ b/examples/translator-app/frontend/app.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2017, 2019 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2017, 2021 Oracle and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,8 +14,7 @@ # limitations under the License. # - -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: helidon-examples-translator-frontend @@ -29,17 +28,17 @@ spec: app: helidon-examples-translator-frontend spec: containers: - - image: helidon-examples-translator-frontend:latest - imagePullPolicy: IfNotPresent - name: translator-frontend - ports: - - containerPort: 8080 - env: - - name: tracing.host - value: "zipkin" - - name: backend.host - value: "helidon-examples-translator-backend" - restartPolicy: Always + - name: translator-frontend + image: helidon-examples-translator-frontend:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 + env: + - name: tracing.host + value: zipkin + - name: backend.host + value: helidon-examples-translator-backend + --- apiVersion: v1 @@ -59,16 +58,19 @@ spec: --- -apiVersion: extensions/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: helidon-examples-translator-frontend spec: rules: - - host: localhost - http: - paths: - - path: /translator - backend: - serviceName: helidon-examples-translator-frontend - servicePort: 8080 \ No newline at end of file + - host: localhost + http: + paths: + - path: /translator + pathType: Prefix + backend: + service: + name: helidon-examples-translator-frontend + port: + number: 8080 diff --git a/grpc/client/src/test/java/io/helidon/grpc/client/GrpcChannelsProviderIT.java b/grpc/client/src/test/java/io/helidon/grpc/client/GrpcChannelsProviderIT.java index 7777b5d5842..33a90a693dc 100644 --- a/grpc/client/src/test/java/io/helidon/grpc/client/GrpcChannelsProviderIT.java +++ b/grpc/client/src/test/java/io/helidon/grpc/client/GrpcChannelsProviderIT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,12 +35,14 @@ import io.grpc.EquivalentAddressGroup; import io.grpc.NameResolver; import io.grpc.StatusRuntimeException; +import io.netty.handler.codec.DecoderException; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import services.TreeMapService; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -185,13 +187,15 @@ public void shouldNotConnectWithoutCaCertTo2WaySslServer() { @Test public void shouldNotConnectWithoutClientCertTo2WaySslServer() { StatusRuntimeException sre = assertThrows(StatusRuntimeException.class, () -> invokeUnary(port2WaySSL, WITH_CA_CERT + WITH_CLIENT_KEY)); - assertThat(sre.getCause().getClass(), equalTo(javax.net.ssl.SSLHandshakeException.class)); + assertThat(sre.getCause(), instanceOf(DecoderException.class)); + assertThat(sre.getCause().getCause(), instanceOf(SSLException.class)); } @Test public void shouldNotConnectWithoutClientKeyTo2WaySslServer() { StatusRuntimeException sre = assertThrows(StatusRuntimeException.class, () -> invokeUnary(port2WaySSL, WITH_CA_CERT + WITH_CLIENT_CERT)); - assertThat(sre.getCause().getClass(), equalTo(javax.net.ssl.SSLHandshakeException.class)); + assertThat(sre.getCause(), instanceOf(DecoderException.class)); + assertThat(sre.getCause().getCause(), instanceOf(SSLException.class)); } @Test diff --git a/jersey/client/src/main/resources/META-INF/native-image/io.helidon.jersey/helidon-jersey-client/native-image.properties b/jersey/client/src/main/resources/META-INF/native-image/io.helidon.jersey/helidon-jersey-client/native-image.properties new file mode 100644 index 00000000000..ecfa41b70b2 --- /dev/null +++ b/jersey/client/src/main/resources/META-INF/native-image/io.helidon.jersey/helidon-jersey-client/native-image.properties @@ -0,0 +1,17 @@ +# +# Copyright (c) 2021 Oracle and/or its affiliates. +# +# 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. +# + +Args=--initialize-at-run-time=org.glassfish.jersey.client.internal.HttpUrlConnector diff --git a/microprofile/fault-tolerance/src/main/java/io/helidon/microprofile/faulttolerance/MethodInvoker.java b/microprofile/fault-tolerance/src/main/java/io/helidon/microprofile/faulttolerance/MethodInvoker.java index 97b5e453977..e829a175795 100644 --- a/microprofile/fault-tolerance/src/main/java/io/helidon/microprofile/faulttolerance/MethodInvoker.java +++ b/microprofile/fault-tolerance/src/main/java/io/helidon/microprofile/faulttolerance/MethodInvoker.java @@ -600,22 +600,9 @@ private FtHandlerTyped createMethodHandler(MethodState methodState) { if (introspector.hasFallback()) { Fallback fallback = Fallback.builder() .fallback(throwable -> { - try { - // Reference request context if request scope is active - if (requestScope != null) { - requestContext = requestScope.referenceCurrent(); - } - - // Execute callback logic - fallbackCalled.set(true); - FallbackHelper cfb = new FallbackHelper(context, introspector, throwable); - return toCompletionStageSupplier(cfb::execute).get(); - } finally { - // Release request context if referenced - if (requestContext != null) { - requestContext.release(); - } - } + fallbackCalled.set(true); + FallbackHelper cfb = new FallbackHelper(context, introspector, throwable); + return toCompletionStageSupplier(cfb::execute).get(); }) .applyOn(mapTypes(introspector.getFallback().applyOn())) .skipOn(mapTypes(introspector.getFallback().skipOn())) diff --git a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/InterceptorSyntheticSimplyTimed.java b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/InterceptorSyntheticSimplyTimed.java index 6175b7c11a1..77da63cc625 100644 --- a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/InterceptorSyntheticSimplyTimed.java +++ b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/InterceptorSyntheticSimplyTimed.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,8 @@ package io.helidon.microprofile.metrics; import java.lang.reflect.Method; +import java.time.Duration; +import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Priority; @@ -24,8 +26,9 @@ import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.container.CompletionCallback; -import org.eclipse.microprofile.metrics.MetricRegistry; import org.eclipse.microprofile.metrics.SimpleTimer; /** @@ -42,12 +45,12 @@ final class InterceptorSyntheticSimplyTimed { private static final Logger LOGGER = Logger.getLogger(InterceptorSyntheticSimplyTimed.class.getName()); - private final MetricRegistry metricRegistry; private final boolean isEnabled; + private final RestEndpointMetricsInfo restEndpointMetricsInfo; @Inject - InterceptorSyntheticSimplyTimed(MetricRegistry registry, RestEndpointMetricsInfo restEndpointMetricsInfo) { - metricRegistry = registry; + InterceptorSyntheticSimplyTimed(RestEndpointMetricsInfo restEndpointMetricsInfo) { + this.restEndpointMetricsInfo = restEndpointMetricsInfo; isEnabled = restEndpointMetricsInfo.isEnabled(); } @@ -63,16 +66,45 @@ public Object interceptRestEndpoint(InvocationContext context) throws Throwable if (!isEnabled) { return context.proceed(); } + long startNanos = System.nanoTime(); try { LOGGER.fine("Interceptor of SyntheticSimplyTimed called for '" + context.getTarget().getClass() + "::" + context.getMethod().getName() + "'"); Method timedMethod = context.getMethod(); SimpleTimer simpleTimer = MetricsCdiExtension.syntheticSimpleTimer(timedMethod); + AsyncResponse asyncResponse = restEndpointMetricsInfo.asyncResponse(context); + if (asyncResponse != null) { + asyncResponse.register(new FinishCallback(startNanos, simpleTimer)); + return context.proceed(); + } return simpleTimer.time(context::proceed); } catch (Throwable t) { - LOGGER.fine("Throwable caught by interceptor '" + t.getMessage() + "'"); + LOGGER.log(Level.FINE, "Throwable caught by interceptor", t); throw t; } } + + /** + * Async callback which updates a {@code SimpleTimer} associated with the REST endpoint. + */ + static class FinishCallback implements CompletionCallback { + + private final long startTimeNanos; + private final SimpleTimer simpleTimer; + + private FinishCallback(long startTimeNanos, SimpleTimer simpleTimer) { + this.simpleTimer = simpleTimer; + this.startTimeNanos = startTimeNanos; + } + + @Override + public void onComplete(Throwable throwable) { + long nowNanos = System.nanoTime(); + simpleTimer.update(Duration.ofNanos(nowNanos - startTimeNanos)); + if (throwable != null) { + LOGGER.log(Level.FINE, "Throwable detected by interceptor callback", throwable); + } + } + } } diff --git a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/MetricsCdiExtension.java b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/MetricsCdiExtension.java index ae55cf075f9..2d6887fff6d 100644 --- a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/MetricsCdiExtension.java +++ b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/MetricsCdiExtension.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2020 Oracle and/or its affiliates. + * Copyright (c) 2018, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,6 +61,7 @@ import javax.inject.Qualifier; import javax.inject.Singleton; import javax.interceptor.Interceptor; +import javax.interceptor.InvocationContext; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.HEAD; @@ -68,6 +69,8 @@ import javax.ws.rs.PATCH; import javax.ws.rs.POST; import javax.ws.rs.PUT; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.container.Suspended; import io.helidon.common.Errors; import io.helidon.common.context.Contexts; @@ -142,6 +145,7 @@ public class MetricsCdiExtension implements Extension { private final Map, Set> methodsWithSyntheticSimpleTimer = new HashMap<>(); private final Set> syntheticSimpleTimerClassesProcessed = new HashSet<>(); private final Set syntheticSimpleTimersToRegister = new HashSet<>(); + private final Map asyncSyntheticSimpleTimerInfo = new HashMap<>(); @SuppressWarnings("unchecked") private static T getReference(BeanManager bm, Type type, Bean bean) { @@ -312,6 +316,12 @@ void before(@Observes BeforeBeanDiscovery discovery) { // Config might disable the MP synthetic SimpleTimer feature for JAX-RS endpoints. // For efficiency, prepare to consult config only once rather than from each interceptor instance. discovery.addAnnotatedType(RestEndpointMetricsInfo.class, RestEndpointMetricsInfo.class.getSimpleName()); + + asyncSyntheticSimpleTimerInfo.clear(); + } + + Map asyncResponseInfo() { + return asyncSyntheticSimpleTimerInfo; } private void clearAnnotationInfo(@Observes AfterDeploymentValidation adv) { @@ -517,6 +527,25 @@ static SimpleTimer syntheticSimpleTimer(Method method) { .simpleTimer(SYNTHETIC_SIMPLE_TIMER_METADATA, syntheticSimpleTimerMetricTags(method)); } + private SimpleTimer registerAndSaveAsyncSyntheticSimpleTimer(Method method) { + SimpleTimer result = syntheticSimpleTimer(method); + asyncSyntheticSimpleTimerInfo.computeIfAbsent(method, this::asyncResponse); + return result; + } + + private AsyncResponseInfo asyncResponse(Method m) { + int candidateAsyncResponseParameterSlot = 0; + + for (Parameter p : m.getParameters()) { + if (AsyncResponse.class.isAssignableFrom(p.getType()) && p.getAnnotation(Suspended.class) != null) { + return new AsyncResponseInfo(candidateAsyncResponseParameterSlot); + } + candidateAsyncResponseParameterSlot++; + + } + return null; + } + /** * Creates the {@link MetricID} for the synthetic {@link SimplyTimed} annotation we add to each JAX-RS method. * @@ -656,7 +685,7 @@ private void collectSyntheticSimpleTimerMetric(@Observes ProcessManagedBean p } private void registerSyntheticSimpleTimerMetrics(@Observes @RuntimeStart Object event) { - syntheticSimpleTimersToRegister.forEach(MetricsCdiExtension::syntheticSimpleTimer); + syntheticSimpleTimersToRegister.forEach(this::registerAndSaveAsyncSyntheticSimpleTimer); if (LOGGER.isLoggable(Level.FINE)) { Set> syntheticSimpleTimerAnnotatedClassesIgnored = new HashSet<>(methodsWithSyntheticSimpleTimer.keySet()); syntheticSimpleTimerAnnotatedClassesIgnored.removeAll(syntheticSimpleTimerClassesProcessed); @@ -670,7 +699,7 @@ private void registerSyntheticSimpleTimerMetrics(@Observes @RuntimeStart Object syntheticSimpleTimersToRegister.clear(); } - static boolean restEndpointsMetricEnabledFromConfig() { + boolean restEndpointsMetricEnabledFromConfig() { try { return ((Config) (ConfigProvider.getConfig())) .get("metrics") @@ -934,4 +963,28 @@ public boolean isSynthetic() { return annotatedMember.getJavaMember().isSynthetic(); } } + + /** + * A {@code AsyncResponse} parameter annotated with {@code Suspended} in a JAX-RS method subject to inferred + * {@code SimplyTimed} behavior. + */ + static class AsyncResponseInfo { + + // which parameter slot in the method the AsyncResponse is + private final int parameterSlot; + + AsyncResponseInfo(int parameterSlot) { + this.parameterSlot = parameterSlot; + } + + /** + * Returns the {@code AsyncResponse} argument object in the given invocation. + * + * @param context the {@code InvocationContext} representing the call with an {@code AsyncResponse} parameter + * @return the {@code AsyncResponse} instance + */ + AsyncResponse asyncResponse(InvocationContext context) { + return AsyncResponse.class.cast(context.getParameters()[parameterSlot]); + } + } } diff --git a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RestEndpointMetricsInfo.java b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RestEndpointMetricsInfo.java index 83377a36b72..e2e2cdbf508 100644 --- a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RestEndpointMetricsInfo.java +++ b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RestEndpointMetricsInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,25 +16,43 @@ */ package io.helidon.microprofile.metrics; -import javax.annotation.PostConstruct; +import java.lang.reflect.Method; +import java.util.Map; + import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.inject.spi.BeanManager; +import javax.inject.Inject; +import javax.interceptor.InvocationContext; +import javax.ws.rs.container.AsyncResponse; + +import io.helidon.microprofile.metrics.MetricsCdiExtension.AsyncResponseInfo; /** - * Captures whether configuration enables or disables synthetic {@code SimplyMetric} annotation - * behavior efficiently so interceptor instances know efficiently whether to find and update - * the corresponding metrics or not. + * Captures information about REST endpoint synthetic annotations so interceptors can be quicker. Includes: + *
    + *
  • whether configuration enables or disables synthetic {@code SimplyMetric} annotation behavior
  • + *
  • which JAX-RS endpoint methods (if any) are asynchronous
  • + *
*/ @ApplicationScoped class RestEndpointMetricsInfo { private boolean isEnabled; + private Map asyncResponseInfo; - @PostConstruct - void setup() { - isEnabled = MetricsCdiExtension.restEndpointsMetricEnabledFromConfig(); + @Inject + RestEndpointMetricsInfo(BeanManager beanManager) { + MetricsCdiExtension metricsCdiExtension = beanManager.getExtension(MetricsCdiExtension.class); + isEnabled = metricsCdiExtension.restEndpointsMetricEnabledFromConfig(); + asyncResponseInfo = metricsCdiExtension.asyncResponseInfo(); } public boolean isEnabled() { return isEnabled; } + + public AsyncResponse asyncResponse(InvocationContext context) { + AsyncResponseInfo info = asyncResponseInfo.get(context.getMethod()); + return info == null ? null : info.asyncResponse(context); + } } diff --git a/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/HelloWorldAsyncResponseTest.java b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/HelloWorldAsyncResponseTest.java new file mode 100644 index 00000000000..b13eaae093b --- /dev/null +++ b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/HelloWorldAsyncResponseTest.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2021 Oracle and/or its affiliates. + * + * 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. + * + */ +package io.helidon.microprofile.metrics; + +import java.time.Duration; +import java.util.Map; +import java.util.concurrent.ExecutionException; + +import javax.ws.rs.client.AsyncInvoker; +import javax.ws.rs.client.InvocationCallback; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.core.MediaType; + +import io.helidon.microprofile.metrics.InterceptorSyntheticSimplyTimed.FinishCallback; +import io.helidon.microprofile.tests.junit5.HelidonTest; + +import org.eclipse.microprofile.metrics.MetricID; +import org.eclipse.microprofile.metrics.SimpleTimer; +import org.eclipse.microprofile.metrics.Tag; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; + +@HelidonTest +public class HelloWorldAsyncResponseTest extends HelloWorldTest { + + @Test + public void test() { + String result = webTarget + .path("helloworld/slow") + .request() + .accept(MediaType.TEXT_PLAIN) + .get(String.class); + + assertThat("Mismatched string result", result, is(HelloWorldResource.SLOW_RESPONSE)); + + Tag[] tags = { + new Tag("class", HelloWorldResource.class.getName()), + new Tag("method", "slowMessage_" + AsyncResponse.class.getName()) + }; + + SimpleTimer simpleTimer = syntheticSimpleTimerRegistry().simpleTimer("REST.request", tags); + assertThat(simpleTimer, is(notNullValue())); + Duration minDuration = Duration.ofSeconds(HelloWorldResource.SLOW_DELAY_SECS); + assertThat(simpleTimer.getElapsedTime().compareTo(minDuration), is(greaterThan(0))); + } +} diff --git a/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/HelloWorldResource.java b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/HelloWorldResource.java index 02a8000d0cb..1faefa9317e 100644 --- a/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/HelloWorldResource.java +++ b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/HelloWorldResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2020 Oracle and/or its affiliates. + * Copyright (c) 2018, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,13 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.container.Suspended; import javax.ws.rs.core.MediaType; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; /** * HelloWorldResource class. @@ -34,6 +40,13 @@ @RequestScoped public class HelloWorldResource { + static final String SLOW_RESPONSE = "At last"; + + // In case pipeline runs need a different time + static final int SLOW_DELAY_SECS = Integer.getInteger("helidon.asyncSimplyTimedDelaySeconds", 2); + + private static ExecutorService executorService = Executors.newSingleThreadExecutor(); + @Inject MetricRegistry metricRegistry; @@ -51,4 +64,18 @@ public String message() { public String messageWithArg(String input){ return "Hello World, " + input; } + + @GET + @Path("/slow") + @Produces(MediaType.TEXT_PLAIN) + public void slowMessage(@Suspended AsyncResponse ar) { + executorService.execute(() -> { + try { + TimeUnit.SECONDS.sleep(SLOW_DELAY_SECS); + } catch (InterruptedException e) { + // absorb silently + } + ar.resume(SLOW_RESPONSE); + }); + } } diff --git a/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonInboundHeaderProvider.java b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonInboundHeaderProvider.java new file mode 100644 index 00000000000..cfd0acb1242 --- /dev/null +++ b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonInboundHeaderProvider.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2021 Oracle and/or its affiliates. + * + * 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. + */ +package io.helidon.microprofile.restclient; + +import java.util.List; +import java.util.Map; + +import io.helidon.common.context.Contexts; + +import org.glassfish.jersey.microprofile.restclient.InboundHeadersProvider; + +/** + * Provider which propagates inbound request headers via Helidon {@link io.helidon.common.context.Context}. + */ +class HelidonInboundHeaderProvider implements InboundHeadersProvider { + + @Override + public Map> inboundHeaders() { + return Contexts.context() + .flatMap(context -> context.get(InboundHeaders.class)) + .map(InboundHeaders::getInboundHeaders) + .orElse(Map.of()); + } + +} diff --git a/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonRequestHeaderAutoDiscoverable.java b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonRequestHeaderAutoDiscoverable.java new file mode 100644 index 00000000000..44a239107d3 --- /dev/null +++ b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonRequestHeaderAutoDiscoverable.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2021 Oracle and/or its affiliates. + * + * 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. + */ +package io.helidon.microprofile.restclient; + +import javax.ws.rs.ConstrainedTo; +import javax.ws.rs.RuntimeType; +import javax.ws.rs.core.FeatureContext; + +import org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable; + +/** + * Automatically discovered JAX-RS provider which registers Rest Client specific components to the server. + */ +@ConstrainedTo(RuntimeType.SERVER) +public class HelidonRequestHeaderAutoDiscoverable implements ForcedAutoDiscoverable { + @Override + public void configure(FeatureContext context) { + if (!context.getConfiguration().isRegistered(HelidonRequestHeaderFilter.class)) { + context.register(HelidonRequestHeaderFilter.class); + } + } +} diff --git a/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonRequestHeaderFilter.java b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonRequestHeaderFilter.java new file mode 100644 index 00000000000..26aa4638382 --- /dev/null +++ b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/HelidonRequestHeaderFilter.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2021 Oracle and/or its affiliates. + * + * 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. + */ +package io.helidon.microprofile.restclient; + +import javax.ws.rs.ConstrainedTo; +import javax.ws.rs.RuntimeType; +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerRequestFilter; + +import io.helidon.common.context.Contexts; + +/** + * Server side request filter used for propagation of request headers to server client request. + * Uses {@link Contexts} to propagate headers. + */ +@ConstrainedTo(RuntimeType.SERVER) +class HelidonRequestHeaderFilter implements ContainerRequestFilter { + + @Override + public void filter(ContainerRequestContext requestContext) { + Contexts.context().ifPresent(context -> context.register(new InboundHeaders(requestContext.getHeaders()))); + } + +} diff --git a/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/InboundHeaders.java b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/InboundHeaders.java new file mode 100644 index 00000000000..01076e99a8f --- /dev/null +++ b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/InboundHeaders.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2021 Oracle and/or its affiliates. + * + * 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. + */ +package io.helidon.microprofile.restclient; + +import java.util.List; +import java.util.Map; + +/** + * Wrapper object from obtained inbound request headers. + */ +class InboundHeaders { + + private final Map> inboundHeaders; + + InboundHeaders(Map> inboundHeaders) { + this.inboundHeaders = inboundHeaders; + } + + public Map> getInboundHeaders() { + return inboundHeaders; + } +} diff --git a/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/MpRestClientListener.java b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/MpRestClientListener.java index d8967ce9240..dfa48d2c7b1 100644 --- a/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/MpRestClientListener.java +++ b/microprofile/rest-client/src/main/java/io/helidon/microprofile/restclient/MpRestClientListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2021 Oracle and/or its affiliates. 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. @@ -49,5 +49,7 @@ public void onNewClient(Class aClass, RestClientBuilder restClientBuilder) { } catch (Exception e) { LOGGER.log(Level.FINE, "Failed to replace executor service for a REST Client: " + aClass, e); } + + restClientBuilder.register(new HelidonInboundHeaderProvider()); } } diff --git a/microprofile/rest-client/src/main/java/module-info.java b/microprofile/rest-client/src/main/java/module-info.java index 83bb1a32f6a..dc1532e0957 100644 --- a/microprofile/rest-client/src/main/java/module-info.java +++ b/microprofile/rest-client/src/main/java/module-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,9 +21,16 @@ requires java.logging; requires transitive microprofile.rest.client.api; requires io.helidon.common.context; + requires jersey.common; requires jersey.mp.rest.client; requires java.ws.rs; + exports io.helidon.microprofile.restclient; + // needed for jersey injection + opens io.helidon.microprofile.restclient to hk2.locator,hk2.utils,weld.core.impl, io.helidon.microprofile.cdi; + provides org.eclipse.microprofile.rest.client.spi.RestClientListener with io.helidon.microprofile.restclient.MpRestClientListener; + provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable + with io.helidon.microprofile.restclient.HelidonRequestHeaderAutoDiscoverable; } diff --git a/microprofile/rest-client/src/main/resources/META-INF/services/org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable b/microprofile/rest-client/src/main/resources/META-INF/services/org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable new file mode 100644 index 00000000000..afd19c8f032 --- /dev/null +++ b/microprofile/rest-client/src/main/resources/META-INF/services/org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable @@ -0,0 +1,17 @@ +# +# Copyright (c) 2021 Oracle and/or its affiliates. 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 +# +# 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. +# + +io.helidon.microprofile.restclient.HelidonRequestHeaderAutoDiscoverable \ No newline at end of file diff --git a/microprofile/server/pom.xml b/microprofile/server/pom.xml index cebe9ab1a73..046918d1014 100644 --- a/microprofile/server/pom.xml +++ b/microprofile/server/pom.xml @@ -1,7 +1,7 @@ + + default-test + + test + + test + + + **/DataChunkReleaseTest.java + + + + + + datachunk-release-test + + test + + test + + + **/DataChunkReleaseTest.java + + + + diff --git a/webserver/webserver/src/main/java/io/helidon/webserver/ByteBufRequestChunk.java b/webserver/webserver/src/main/java/io/helidon/webserver/ByteBufRequestChunk.java index fcc8d179f4d..d355cbd4ee2 100644 --- a/webserver/webserver/src/main/java/io/helidon/webserver/ByteBufRequestChunk.java +++ b/webserver/webserver/src/main/java/io/helidon/webserver/ByteBufRequestChunk.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. 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. @@ -40,7 +40,6 @@ class ByteBufRequestChunk implements DataChunk { private final ReferenceHoldingQueue.ReleasableReference ref; ByteBufRequestChunk(ByteBuf byteBuf, ReferenceHoldingQueue referenceHoldingQueue) { - Objects.requireNonNull(byteBuf, "The ByteBuf must not be null!"); byteBuffers = new ByteBuffer[] {byteBuf.nioBuffer().asReadOnlyBuffer()}; ref = new ReferenceHoldingQueue.ReleasableReference<>(this, referenceHoldingQueue, byteBuf::release); @@ -100,9 +99,9 @@ static void logLeak() { /** * An implementation of {@link ReferenceHoldingQueue} that logs a warning - * message once and only once. + * message once and only once when releasing a reference in the queue. */ - static class RefHoldingQueue extends ReferenceHoldingQueue { + static class DataChunkHoldingQueue extends ReferenceHoldingQueue { @Override protected void hookOnAutoRelease() { diff --git a/webserver/webserver/src/main/java/io/helidon/webserver/ForwardingHandler.java b/webserver/webserver/src/main/java/io/helidon/webserver/ForwardingHandler.java index 66bbc8d9fed..eba7262c16d 100644 --- a/webserver/webserver/src/main/java/io/helidon/webserver/ForwardingHandler.java +++ b/webserver/webserver/src/main/java/io/helidon/webserver/ForwardingHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,19 +16,20 @@ package io.helidon.webserver; +import java.lang.ref.ReferenceQueue; import java.nio.charset.StandardCharsets; import java.util.Iterator; import java.util.Map; import java.util.Optional; -import java.util.Queue; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicLong; import java.util.logging.Logger; import javax.net.ssl.SSLEngine; -import io.helidon.common.http.DataChunk; import io.helidon.common.http.Http; +import io.helidon.webserver.ByteBufRequestChunk.DataChunkHoldingQueue; +import io.helidon.webserver.ReferenceHoldingQueue.IndirectReference; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; @@ -68,7 +69,7 @@ public class ForwardingHandler extends SimpleChannelInboundHandler { private final Routing routing; private final NettyWebServer webServer; private final SSLEngine sslEngine; - private final Queue> queues; + private final ReferenceQueue queues; private final HttpRequestDecoder httpRequestDecoder; private final long maxPayloadSize; @@ -82,11 +83,13 @@ public class ForwardingHandler extends SimpleChannelInboundHandler { private CompletableFuture prevRequestFuture; private boolean lastContent; + private final Runnable clearQueues; ForwardingHandler(Routing routing, NettyWebServer webServer, SSLEngine sslEngine, - Queue> queues, + ReferenceQueue queues, + Runnable clearQueues, HttpRequestDecoder httpRequestDecoder, long maxPayloadSize) { this.routing = routing; @@ -95,9 +98,11 @@ public class ForwardingHandler extends SimpleChannelInboundHandler { this.queues = queues; this.httpRequestDecoder = httpRequestDecoder; this.maxPayloadSize = maxPayloadSize; + this.clearQueues = clearQueues; } private void reset() { + lastContent = false; isWebSocketUpgrade = false; actualPayloadSize = 0L; ignorePayload = false; @@ -132,7 +137,9 @@ protected void channelRead0(ChannelHandlerContext ctx, Object msg) { System.identityHashCode(this), System.identityHashCode(ctx.channel()), msg.getClass())); if (msg instanceof HttpRequest) { - lastContent = false; + // On new request, use chance to cleanup queues in HttpInitializer + clearQueues.run(); + // Turns off auto read ctx.channel().config().setAutoRead(false); @@ -153,20 +160,46 @@ protected void channelRead0(ChannelHandlerContext ctx, Object msg) { Optional.ofNullable(ctx.channel().attr(CERTIFICATE_NAME).get()) .ifPresent(name -> request.headers().set(Http.Header.X_HELIDON_CN, name)); - // Queue, context and publisher creation - ReferenceHoldingQueue queue = new ReferenceHoldingQueue<>(); - queues.add(queue); - RequestContext requestContext = new RequestContext(new HttpRequestScopedPublisher(ctx, queue), request); - this.requestContext = requestContext; + // Context, publisher and DataChunk queue for this request/response + DataChunkHoldingQueue queue = new DataChunkHoldingQueue(); + requestContext = new RequestContext(new HttpRequestScopedPublisher(queue), request); + + // Closure local variables that cache mutable instance variables + RequestContext requestContextRef = requestContext; + HttpRequestScopedPublisher publisherRef = requestContextRef.publisher(); + + // Creates an indirect reference between publisher and queue so that when + // publisher is ready for collection, we have access to queue by calling its + // acquire method. We shall also attempt to release queue on completion of + // bareResponse below. + IndirectReference publisherPh = + new IndirectReference<>(publisherRef, queues, queue); + + // Set up read strategy for channel based on consumer demand + publisherRef.onRequest((n, demand) -> { + if (publisherRef.isUnbounded()) { + LOGGER.finest("Netty autoread: true"); + ctx.channel().config().setAutoRead(true); + } else { + LOGGER.finest("Netty autoread: false"); + ctx.channel().config().setAutoRead(false); + } + + if (publisherRef.hasRequests()) { + LOGGER.finest("Requesting next chunks from Netty."); + ctx.channel().read(); + } else { + LOGGER.finest("No hook action required."); + } + }); - // the only reason we have the 'ref' here is that the field might get assigned with null - final HttpRequestScopedPublisher publisherRef = requestContext.publisher(); + // New request ID long requestId = REQUEST_ID_GENERATOR.incrementAndGet(); // If a problem with the request URI, return 400 response BareRequestImpl bareRequest; try { - bareRequest = new BareRequestImpl((HttpRequest) msg, requestContext.publisher(), + bareRequest = new BareRequestImpl((HttpRequest) msg, requestContextRef.publisher(), webServer, ctx, sslEngine, requestId); } catch (IllegalArgumentException e) { send400BadRequest(ctx, e.getMessage()); @@ -206,17 +239,18 @@ protected void channelRead0(ChannelHandlerContext ctx, Object msg) { CompletableFuture thisResp = prevRequestFuture; bareResponse.whenCompleted() .thenRun(() -> { - if (requestContext != null) { - requestContext.responseCompleted(true); - } + // Mark response completed in context + requestContextRef.responseCompleted(true); + + // Consume and release any buffers in publisher + publisherRef.clearAndRelease(); // Cleanup for these queues is done in HttpInitializer, but // we try to do it here if possible to reduce memory usage, // especially for keep-alive connections if (queue.release()) { - queues.remove(queue); + publisherPh.acquire(); // clears reference to other } - publisherRef.clearAndRelease(); // Enables next response to proceed (HTTP pipelining) thisResp.complete(null); @@ -313,6 +347,18 @@ protected void channelRead0(ChannelHandlerContext ctx, Object msg) { } } + /** + * Overrides behavior when exception is thrown in pipeline. + * + * @param ctx channel context. + * @param cause the throwable. + */ + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { + failPublisher(cause); + ctx.close(); + } + /** * Check that an HTTP message has been successfully decoded. * @@ -362,19 +408,18 @@ private static void send100Continue(ChannelHandlerContext ctx) { * @param ctx Channel context. * @param message The message. */ - private static void send400BadRequest(ChannelHandlerContext ctx, String message) { + private void send400BadRequest(ChannelHandlerContext ctx, String message) { byte[] entity = message.getBytes(StandardCharsets.UTF_8); FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, BAD_REQUEST, Unpooled.wrappedBuffer(entity)); response.headers().add(HttpHeaderNames.CONTENT_TYPE, "text/plain"); response.headers().add(HttpHeaderNames.CONTENT_LENGTH, entity.length); response.headers().add(HttpHeaderNames.CONNECTION, HttpHeaderValues.CLOSE); - ctx.write(response) .addListener(future -> { ctx.flush(); ctx.close(); }); - + failPublisher(new Error("400: Bad request")); } /** @@ -384,14 +429,22 @@ private static void send400BadRequest(ChannelHandlerContext ctx, String message) */ private void send413PayloadTooLarge(ChannelHandlerContext ctx) { FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, REQUEST_ENTITY_TOO_LARGE); - ctx.write(response); + ctx.write(response) + .addListener(future -> { + ctx.flush(); + ctx.close(); + }); + failPublisher(new Error("413: Payload is too large")); } - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { + /** + * Informs publisher of failure. + * + * @param cause the cause. + */ + private void failPublisher(Throwable cause) { if (requestContext != null) { requestContext.publisher().fail(cause); } - ctx.close(); } } diff --git a/webserver/webserver/src/main/java/io/helidon/webserver/HttpInitializer.java b/webserver/webserver/src/main/java/io/helidon/webserver/HttpInitializer.java index 5bdad2f3a00..9321654ea35 100644 --- a/webserver/webserver/src/main/java/io/helidon/webserver/HttpInitializer.java +++ b/webserver/webserver/src/main/java/io/helidon/webserver/HttpInitializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,18 +16,21 @@ package io.helidon.webserver; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; import java.security.Principal; import java.security.cert.Certificate; import java.security.cert.X509Certificate; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLPeerUnverifiedException; -import io.helidon.common.http.DataChunk; import io.helidon.webserver.HelidonConnectionHandler.HelidonHttp2ConnectionHandlerBuilder; +import io.helidon.webserver.ReferenceHoldingQueue.IndirectReference; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; @@ -60,7 +63,21 @@ class HttpInitializer extends ChannelInitializer { private final NettyWebServer webServer; private final SocketConfiguration soConfig; private final Routing routing; - private final Queue> queues = new ConcurrentLinkedQueue<>(); + private final AtomicBoolean clearLock = new AtomicBoolean(); + + /** + * Reference queue that collects ReferenceHoldingQueue's when they become + * ready for garbage collection. ReferenceHoldingQueue's extracted from + * this collection that cannot be fully released (some buffers still in + * use) will be added to {@code unreleasedQueues} for later retries. + */ + private final ReferenceQueue queues = new ReferenceQueue<>(); + + /** + * Concurrent queue to track all ReferenceHoldingQueue's not fully released + * (some buffers still in use) after becoming ready for garbage collection. + */ + private final Queue> unreleasedQueues = new ConcurrentLinkedQueue<>(); HttpInitializer(SocketConfiguration soConfig, SslContext sslContext, @@ -72,17 +89,53 @@ class HttpInitializer extends ChannelInitializer { this.webServer = webServer; } + /** + * Calls release on every ReferenceHoldingQueue that has been deemed ready for + * garbage collection and added to {@code queues}. The ReferenceHoldingQueue's not + * fully released are added to {@code unreleasedQueues} for later retries. Uses + * a lock to avoid concurrent modifications to {@code queues}. + */ + @SuppressWarnings("unchecked") private void clearQueues() { - queues.removeIf(ReferenceHoldingQueue::release); + if (clearLock.get() || !clearLock.compareAndSet(false, true)) { + return; + } + try { + for (Reference r = queues.poll(); r != null; r = queues.poll()) { + if (!(r instanceof IndirectReference)) { + LOGGER.finest("Unexpected reference in queues"); + continue; + } + ReferenceHoldingQueue q = ((IndirectReference>) r).acquire(); + if (q == null) { + continue; // no longer referenced + } + if (!q.release()) { + unreleasedQueues.add(q); + } + } + unreleasedQueues.removeIf(ReferenceHoldingQueue::release); + } finally { + clearLock.lazySet(false); + } } + /** + * Clears and shuts down all remaining ReferenceHoldingQueue's still being tracked. + */ void queuesShutdown() { - queues.removeIf(queue -> { + clearQueues(); + unreleasedQueues.removeIf(queue -> { queue.shutdown(); return true; }); } + /** + * Initializes pipeline for new socket channel. + * + * @param ch the socket channel. + */ @Override public void initChannel(SocketChannel ch) { final ChannelPipeline p = ch.pipeline(); @@ -132,13 +185,20 @@ public void initChannel(SocketChannel ch) { } // Helidon's forwarding handler - p.addLast(new ForwardingHandler(routing, webServer, sslEngine, queues, + p.addLast(new ForwardingHandler(routing, webServer, sslEngine, queues, this::clearQueues, requestDecoder, soConfig.maxPayloadSize())); // Cleanup queues as part of event loop ch.eventLoop().execute(this::clearQueues); } + /** + * Sets {@code CERTIFICATE_NAME} in socket channel. + * + * @param future future passed to listener + * @param ch the socket channel + * @param sslHandler the SSL handler + */ private void obtainClientCN(Future future, SocketChannel ch, SslHandler sslHandler) { if (future.cause() == null) { try { @@ -166,6 +226,9 @@ private void obtainClientCN(Future future, SocketChannel ch, Ss } } + /** + * Event logger for HTTP/2 events. + */ private static final class HelidonEventLogger extends ChannelInboundHandlerAdapter { @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { diff --git a/webserver/webserver/src/main/java/io/helidon/webserver/HttpRequestScopedPublisher.java b/webserver/webserver/src/main/java/io/helidon/webserver/HttpRequestScopedPublisher.java index 6951fabf922..defa9679232 100644 --- a/webserver/webserver/src/main/java/io/helidon/webserver/HttpRequestScopedPublisher.java +++ b/webserver/webserver/src/main/java/io/helidon/webserver/HttpRequestScopedPublisher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. 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. @@ -15,60 +15,32 @@ */ package io.helidon.webserver; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.logging.Logger; - import io.helidon.common.http.DataChunk; import io.helidon.common.reactive.BufferedEmittingPublisher; import io.helidon.common.reactive.Multi; +import io.helidon.webserver.ByteBufRequestChunk.DataChunkHoldingQueue; import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; /** - * This publisher is always associated with a single http request. Additionally, - * it is associated with the connection context handler and it maintains a fine - * control of the associated context handler to perform Netty push-backing. + * This publisher is always associated with a single http request. All data + * chunks emitted by this publisher are linked to a reference queue for + * proper cleanup. */ class HttpRequestScopedPublisher extends BufferedEmittingPublisher { - private static final Logger LOGGER = Logger.getLogger(HttpRequestScopedPublisher.class.getName()); - - private final ReentrantReadWriteLock.WriteLock lock = new ReentrantReadWriteLock().writeLock(); - private final ReferenceHoldingQueue referenceQueue; + private final DataChunkHoldingQueue holdingQueue; - HttpRequestScopedPublisher(ChannelHandlerContext ctx, ReferenceHoldingQueue referenceQueue) { + HttpRequestScopedPublisher(DataChunkHoldingQueue holdingQueue) { super(); - this.referenceQueue = referenceQueue; - super.onRequest((n, demand) -> { - if (super.isUnbounded()) { - LOGGER.finest("Netty autoread: true"); - ctx.channel().config().setAutoRead(true); - } else { - LOGGER.finest("Netty autoread: false"); - ctx.channel().config().setAutoRead(false); - } - - try { - lock.lock(); - - if (super.hasRequests()) { - LOGGER.finest("Requesting next chunks from Netty."); - ctx.channel().read(); - } else { - LOGGER.finest("No hook action required."); - } - } finally { - lock.unlock(); - } - }); + this.holdingQueue = holdingQueue; } public int emit(ByteBuf data) { try { - return super.emit(new ByteBufRequestChunk(data, referenceQueue)); + return super.emit(new ByteBufRequestChunk(data, holdingQueue)); } finally { - referenceQueue.release(); + holdingQueue.release(); } } @@ -90,7 +62,7 @@ public void complete() { try { super.complete(); } finally { - referenceQueue.release(); + holdingQueue.release(); } } @@ -99,7 +71,7 @@ public void fail(Throwable throwable) { try { super.fail(throwable); } finally { - referenceQueue.release(); + holdingQueue.release(); } } } diff --git a/webserver/webserver/src/main/java/io/helidon/webserver/ReferenceHoldingQueue.java b/webserver/webserver/src/main/java/io/helidon/webserver/ReferenceHoldingQueue.java index 42ef3f3e9bd..9ce2d90e8b4 100644 --- a/webserver/webserver/src/main/java/io/helidon/webserver/ReferenceHoldingQueue.java +++ b/webserver/webserver/src/main/java/io/helidon/webserver/ReferenceHoldingQueue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. 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. @@ -21,22 +21,19 @@ import java.lang.ref.ReferenceQueue; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Logger; /** - * The ReferenceHoldingQueue is an enhanced reference queue that allows a post - * mortem execution such as a releasing of memory that would otherwise cause a - * memory leak. + * A ReferenceHoldingQueue is an enhanced reference queue that allows a post + * mortem execution in the form of {@code Runnable}. This executable code can + * be used to perform any task, such as decrementing a reference count to an + * object. * * @param the referent type * @see ReferenceHoldingQueue.ReleasableReference */ class ReferenceHoldingQueue extends ReferenceQueue { - - /** - * Logger. - */ private static final Logger LOGGER = Logger.getLogger(ReferenceHoldingQueue.class.getName()); /** @@ -58,7 +55,7 @@ class ReferenceHoldingQueue extends ReferenceQueue { */ boolean release() { while (true) { - Reference poll = poll(); + Reference poll = poll(); if (poll == null) { break; } @@ -66,7 +63,7 @@ boolean release() { hookOnAutoRelease(); if (poll instanceof ReleasableReference) { - ((ReleasableReference) poll).release(); + ((ReleasableReference) poll).release(); } else { LOGGER.warning(() -> "Unexpected type detected: " + poll.getClass()); } @@ -122,6 +119,40 @@ private void unlink(ReleasableReference reference) { set.remove(reference); } + /** + * An indirect reference is a phantom reference that also points to + * another object. When this reference is added to a {@code ReferenceQueue} + * after its reference becomes unreachable, it provides access to that + * other object via its {@code acquire} method. Note that the object can only + * be acquired once, its reference is set to null afterwards to ensure + * collection. + * + * @param type of referent object + * @param type of the other object + */ + static class IndirectReference extends PhantomReference { + private final AtomicReference otherRef = new AtomicReference<>(); + + IndirectReference(T referent, ReferenceQueue q, R otherRef) { + super(referent, q); + this.otherRef.lazySet(otherRef); + } + + public AtomicReference otherRef() { + return otherRef; + } + + /** + * Provides access to other object. Clears reference after first call + * to ensure the other object is eventually collected. + * + * @return other object the first time called and {@code null} afterwards + */ + public R acquire() { + return otherRef.get() == null ? null : otherRef.getAndSet(null); + } + } + /** * This class holds a reference to a {@link Runnable} that will be executed * the latest when its referent (the {@link T} instance) is garbage @@ -131,11 +162,9 @@ private void unlink(ReleasableReference reference) { * * @param the referent type */ - static final class ReleasableReference extends PhantomReference { + static final class ReleasableReference extends IndirectReference { - private final AtomicBoolean released = new AtomicBoolean(false); private final ReferenceHoldingQueue queue; - private final Runnable r; /** * Create a new {@code ReleasableReference}. @@ -144,12 +173,9 @@ static final class ReleasableReference extends PhantomReference { * @param q the reference holding queue * @param r the release callback */ - ReleasableReference(T referent, ReferenceHoldingQueue q, - Runnable r) { - - super(referent, q); + ReleasableReference(T referent, ReferenceHoldingQueue q, Runnable r) { + super(referent, q, r); this.queue = q; - this.r = r; queue.link(this); } @@ -159,14 +185,15 @@ static final class ReleasableReference extends PhantomReference { * @return {@code true} if released was invoked, {@code false} otherwise */ boolean isReleased() { - return released.get(); + return otherRef().get() == null; } /** * Unlink this reference from the queue and invoke the associated release callback. */ void release() { - if (!released.getAndSet(true)) { + Runnable r = acquire(); + if (r != null) { queue.unlink(this); r.run(); }