diff --git a/NOTICE b/NOTICE index 5332cce693c8b1c9d6c82dab31e2b447c2b13e26..f42b510b26214e0baae19e031e69fe7d6c99d806 100644 --- a/NOTICE +++ b/NOTICE @@ -16,8 +16,8 @@ The following software have components provided under the terms of this license: - Apache Commons CLI (from http://commons.apache.org/proper/commons-cli/) - Cobertura (from http://cobertura.sourceforge.net) -- Default Plexus Container (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default) -- Plexus Common Utilities (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils) +- Plexus :: Default Container (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default) +- Plexus Common Utilities (from http://plexus.codehaus.org/plexus-utils) - oro (from ) ======================================================================== @@ -28,6 +28,7 @@ The following software have components provided under the terms of this license: - AMQP 1.0 JMS Spring Boot AutoConfiguration (from https://repo1.maven.org/maven2/org/amqphub/spring/amqp-10-jms-spring-boot-autoconfigure) - AMQP 1.0 JMS Spring Boot Starter (from https://repo1.maven.org/maven2/org/amqphub/spring/amqp-10-jms-spring-boot-starter) - ASM based accessors helper used by json-smart (from ) +- ASM based accessors helper used by json-smart (from ) - AWS Java SDK for AWS Amplify (from https://aws.amazon.com/sdkforjava) - AWS Java SDK for AWS App Mesh (from https://aws.amazon.com/sdkforjava) - AWS Java SDK for AWS AppSync (from https://aws.amazon.com/sdkforjava) @@ -287,54 +288,59 @@ The following software have components provided under the terms of this license: - AWS SDK for Java - Core (from https://aws.amazon.com/sdkforjava) - AWS SDK for Java - Models (from https://aws.amazon.com/sdkforjava) - Adapter: RxJava (from https://repo1.maven.org/maven2/com/squareup/retrofit2/adapter-rxjava) -- Apache Ant + JUnit (from https://ant.apache.org/) -- Apache Ant Core (from https://ant.apache.org/) -- Apache Ant Launcher (from https://ant.apache.org/) +- Apache Ant + JUnit (from http://ant.apache.org/) +- Apache Ant Core (from http://ant.apache.org/) +- Apache Ant Launcher (from http://ant.apache.org/) +- Apache Commons BeanUtils (from http://commons.apache.org/proper/commons-beanutils/) - Apache Commons CLI (from http://commons.apache.org/proper/commons-cli/) - Apache Commons Codec (from https://commons.apache.org/proper/commons-codec/) - Apache Commons Collections (from http://commons.apache.org/proper/commons-collections/) - Apache Commons IO (from https://commons.apache.org/proper/commons-io/) - Apache Commons Lang (from http://commons.apache.org/proper/commons-lang/) - Apache Commons Logging (from http://commons.apache.org/proper/commons-logging/) -- Apache Commons Logging (from http://commons.apache.org/proper/commons-logging/) -- Apache Commons Validator (from http://commons.apache.org/proper/commons-validator/) - Apache Geronimo JMS Spec 2.0 (from http://geronimo.apache.org/maven/${siteId}/${version}) +- Apache HTTP transport v2 for the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-apache-v2) - Apache HttpAsyncClient (from http://hc.apache.org/httpcomponents-asyncclient) +- Apache HttpClient (from http://hc.apache.org/httpcomponents-client) +- Apache HttpClient Cache (from http://hc.apache.org/httpcomponents-client) +- Apache HttpCore (from http://hc.apache.org/httpcomponents-core-ga) - Apache HttpCore NIO (from http://hc.apache.org/httpcomponents-core-ga) - Apache Log4j API (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api) - Apache Log4j Core (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core) - Apache Log4j JUL Adapter (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-jul) - Apache Log4j SLF4J Binding (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-slf4j-impl) - Apache Log4j to SLF4J Adapter (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-to-slf4j) -- Apache Maven Invoker (from ) - Apache Maven Reporting Implementation (from https://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting-impl) +- Apache Maven Wagon :: API (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-provider-api) +- Apache Maven Wagon :: Providers :: File Provider (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-file) +- Apache Maven Wagon :: Providers :: HTTP Shared Library (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-http-shared) - Apache Velocity (from http://velocity.apache.org/engine/devel/) - AssertJ fluent assertions (from https://repo1.maven.org/maven2/org/assertj/assertj-core) - Asynchronous Http Client (from https://repo1.maven.org/maven2/org/asynchttpclient/async-http-client) - Asynchronous Http Client Netty Utils (from https://repo1.maven.org/maven2/org/asynchttpclient/async-http-client-netty-utils) -- AutoValue Annotations (from https://github.com/google/auto/tree/master/value) -- AutoValue Annotations (from https://github.com/google/auto/tree/master/value) -- AutoValue Processor (from https://github.com/google/auto/tree/master/value) +- AutoValue Annotations (from https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations) +- AutoValue Annotations (from https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations) - Azure Spring Boot Starter for Azure AD Spring Security Integration (from https://github.com/Azure/azure-sdk-for-java) -- BSON (from http://bsonspec.org) +- BSON (from https://bsonspec.org) - Bean Validation API (from http://beanvalidation.org) -- BeanUtils (from http://jakarta.apache.org/commons/beanutils/) - Brave (from https://repo1.maven.org/maven2/io/zipkin/brave/brave) - Brave Instrumentation: Http Adapters (from https://repo1.maven.org/maven2/io/zipkin/brave/brave-instrumentation-http) - Brave instrumentation for Reactor Netty HTTP (from https://github.com/reactor/reactor-netty) - Byte Buddy (without dependencies) (from https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy) - Byte Buddy agent (from https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy-agent) - ClassMate (from http://github.com/cowtowncoder/java-classmate) -- Cloud Storage JSON API v1-rev20210914-1.32.1 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-storage) +- Cloud Key Management Service (KMS) API v1-rev20210820-1.32.1 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-cloudkms) +- Cloud Key Management Service (KMS) API v1-rev20210820-1.32.1 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-cloudkms) +- Cloud Storage JSON API v1-rev20200814-1.30.10 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-storage) +- Cloud Storage JSON API v1-rev20200814-1.30.10 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-storage) - CloudWatch Metrics for AWS Java SDK (from https://aws.amazon.com/sdkforjava) - Cobertura (from http://cobertura.sourceforge.net) - Collections (from https://repo1.maven.org/maven2/commons-collections/commons-collections) -- Commons Digester (from http://commons.apache.org/digester/) - Commons Lang (from http://commons.apache.org/lang/) +- Commons Validator (from http://commons.apache.org/validator/) - Converter: Jackson (from https://repo1.maven.org/maven2/com/squareup/retrofit2/converter-jackson) - Core functionality for the Reactor Netty library (from https://github.com/reactor/reactor-netty) - Data Mapper for Jackson (from http://jackson.codehaus.org) -- Default Plexus Container (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default) - Doxia :: APT Module (from http://maven.apache.org/doxia/doxia/doxia-modules/doxia-module-apt/) - Doxia :: Core (from http://maven.apache.org/doxia/doxia/doxia-core/) - Doxia :: FML Module (from http://maven.apache.org/doxia/doxia/doxia-modules/doxia-module-fml/) @@ -343,7 +349,7 @@ The following software have components provided under the terms of this license: - Doxia :: XHTML Module (from http://maven.apache.org/doxia/doxia/doxia-modules/doxia-module-xhtml/) - Doxia Sitetools :: Decoration Model (from http://maven.apache.org/doxia/doxia-sitetools/doxia-decoration-model/) - Doxia Sitetools :: Site Renderer (from https://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-site-renderer) -- Elastic JNA Distribution (from https://github.com/elastic/jna-build) +- Elastic JNA Distribution (from https://github.com/java-native-access/jna) - Expression Language 3.0 (from http://uel.java.net) - FindBugs-jsr305 (from http://findbugs.sourceforge.net/) - GSON extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-gson) @@ -353,19 +359,22 @@ The following software have components provided under the terms of this license: - Google App Engine extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-appengine) - Google App Engine extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-appengine) - Google Cloud Core (from https://github.com/googleapis/java-core) +- Google Cloud Core (from https://github.com/googleapis/java-core) - Google Cloud Core HTTP (from https://github.com/googleapis/java-core) - Google Cloud Core HTTP (from https://github.com/googleapis/java-core) -- Google Cloud Core gRPC (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core-grpc) -- Google Cloud Core gRPC (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core-grpc) +- Google Cloud Core gRPC (from https://github.com/googleapis/java-core) +- Google Cloud Core gRPC (from https://github.com/googleapis/java-core) - Google Cloud Datastore (from https://github.com/googleapis/java-datastore) - Google Cloud Datastore (from https://github.com/googleapis/java-datastore) - Google Cloud IAM Service Account Credentials (from https://github.com/googleapis/java-iamcredentials) -- Google Cloud Key Management Service (KMS) API v1-rev9-1.22.0 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-cloudkms) -- Google Cloud Logging (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-logging) -- Google Cloud Logging (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-logging) -- Google Cloud Pub/Sub (from https://github.com/googleapis/java-pubsub) -- Google Cloud Pub/Sub (from https://github.com/googleapis/java-pubsub) -- Google Cloud Storage (from https://github.com/googleapis/java-storage) +- Google Cloud IAM Service Account Credentials (from https://github.com/googleapis/java-iamcredentials) +- Google Cloud Logging (from https://github.com/googleapis/java-logging) +- Google Cloud Logging (from https://github.com/googleapis/java-logging) +- Google Cloud Pub/Sub (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-pubsub) +- Google Cloud Pub/Sub (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-pubsub) +- Google Cloud Storage (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-storage) +- Google Cloud Storage (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-storage) +- Google HTTP Client Library for Java (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client) - Google HTTP Client Library for Java (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client) - Google HTTP Client Library for Java (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client) - Google OAuth Client Library for Java (from https://repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client) @@ -373,19 +382,16 @@ The following software have components provided under the terms of this license: - Gson (from https://repo1.maven.org/maven2/com/google/code/gson/gson) - Gson (from https://repo1.maven.org/maven2/com/google/code/gson/gson) - Guava InternalFutureFailureAccess and InternalFutures (from https://repo1.maven.org/maven2/com/google/guava/failureaccess) -- Guava: Google Core Libraries for Java (from https://github.com/google/guava) -- Guava: Google Core Libraries for Java (from https://github.com/google/guava) +- Guava: Google Core Libraries for Java (from https://repo1.maven.org/maven2/com/google/guava/guava) +- Guava: Google Core Libraries for Java (from https://repo1.maven.org/maven2/com/google/guava/guava) - HPPC Collections (from https://repo1.maven.org/maven2/com/carrotsearch/hppc) - HTTP functionality for the Reactor Netty library (from https://github.com/reactor/reactor-netty) - Hibernate Validator Engine (from https://repo1.maven.org/maven2/org/hibernate/validator/hibernate-validator) -- HttpClient (from http://hc.apache.org/httpcomponents-client) -- HttpClient Cache (from http://hc.apache.org/httpcomponents-client) -- HttpCore (from http://hc.apache.org/httpcomponents-core-ga) - IBM COS Java SDK for Amazon S3 (from https://github.com/ibm/ibm-cos-sdk-java) - IBM COS Java SDK for COS KMS (from https://github.com/ibm/ibm-cos-sdk-java) - IBM COS SDK For Java (from https://github.com/ibm/ibm-cos-sdk-java) - IBM COS SDK for Java - Core (from https://github.com/ibm/ibm-cos-sdk-java) -- Identity and Access Management (IAM) API v1-rev284-1.25.0 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-iam) +- Identity and Access Management (IAM) API v1-rev20191010-1.30.3 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-iam) - J2ObjC Annotations (from https://github.com/google/j2objc/) - J2ObjC Annotations (from https://github.com/google/j2objc/) - JBoss Logging 3 (from http://www.jboss.org) @@ -393,33 +399,34 @@ The following software have components provided under the terms of this license: - JDOM (from http://www.jdom.org) - JMES Path Query library (from https://aws.amazon.com/sdkforjava) - JSON Small and Fast Parser (from https://repo1.maven.org/maven2/net/minidev/json-smart) +- JSON Small and Fast Parser (from https://repo1.maven.org/maven2/net/minidev/json-smart) - JSON Web Token support for the JVM (from https://repo1.maven.org/maven2/io/jsonwebtoken/jjwt) - JSON library from Android SDK (from http://developer.android.com/sdk) - JSON.simple (from http://code.google.com/p/json-simple/) -- JSONassert (from https://github.com/skyscreamer/JSONassert) +- JSONassert (from http://github.com/skyscreamer/yoga) - JSR107 API and SPI (from https://github.com/jsr107/jsr107spec) - Jackson (from http://jackson.codehaus.org) - Jackson (from http://jackson.codehaus.org) - Jackson 2 extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson2) - Jackson 2 extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson2) - Jackson dataformat: CBOR (from http://github.com/FasterXML/jackson-dataformats-binary) -- Jackson dataformat: Smile (from http://github.com/FasterXML/jackson-dataformats-binary) -- Jackson dataformat: Smile (from http://github.com/FasterXML/jackson-dataformats-binary) - Jackson datatype: JSR310 (from https://repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jsr310) - Jackson datatype: JSR310 (from https://repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jsr310) - Jackson datatype: jdk8 (from https://repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jdk8) - Jackson datatype: jdk8 (from https://repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jdk8) - Jackson extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson) - Jackson module: Afterburner (from https://github.com/FasterXML/jackson-modules-base) -- Jackson module: JAXB Annotations (from https://github.com/FasterXML/jackson-modules-base) -- Jackson module: JAXB Annotations (from https://github.com/FasterXML/jackson-modules-base) - Jackson-annotations (from http://github.com/FasterXML/jackson) - Jackson-annotations (from http://github.com/FasterXML/jackson) -- Jackson-core (from https://github.com/FasterXML/jackson-core) -- Jackson-dataformat-XML (from http://wiki.fasterxml.com/JacksonExtensionXmlDataBinding) +- Jackson-core (from http://wiki.fasterxml.com/JacksonHome) +- Jackson-dataformat-Smile (from http://wiki.fasterxml.com/JacksonForSmile) +- Jackson-dataformat-Smile (from http://wiki.fasterxml.com/JacksonForSmile) +- Jackson-dataformat-XML (from https://github.com/FasterXML/jackson-dataformat-xml) - Jackson-dataformat-YAML (from https://github.com/FasterXML/jackson) - Jackson-dataformat-YAML (from https://github.com/FasterXML/jackson) -- Jackson-datatype-JODA (from http://wiki.fasterxml.com/JacksonModuleJoda) +- Jackson-datatype-Joda (from http://wiki.fasterxml.com/JacksonModuleJoda) +- Jackson-module-JAXB-annotations (from http://wiki.fasterxml.com/JacksonJAXBAnnotations) +- Jackson-module-JAXB-annotations (from http://wiki.fasterxml.com/JacksonJAXBAnnotations) - Jackson-module-parameter-names (from https://repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-parameter-names) - Jackson-module-parameter-names (from https://repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-parameter-names) - Jakarta Bean Validation API (from https://beanvalidation.org) @@ -431,8 +438,8 @@ The following software have components provided under the terms of this license: - Javassist (from http://www.javassist.org/) - Javassist (from http://www.javassist.org/) - JetBrains Java Annotations (from https://github.com/JetBrains/java-annotations) -- Jetty Server (from http://jetty.mortbay.org) -- Jetty Utilities (from http://jetty.mortbay.org) +- Jetty Server (from https://repo1.maven.org/maven2/org/mortbay/jetty/jetty) +- Jetty Utilities (from https://repo1.maven.org/maven2/org/mortbay/jetty/jetty-util) - Joda-Time (from https://www.joda.org/joda-time/) - KeePassJava2 :: All (from https://repo1.maven.org/maven2/org/linguafranca/pwdb/KeePassJava2) - KeePassJava2 :: DOM (from https://repo1.maven.org/maven2/org/linguafranca/pwdb/KeePassJava2-dom) @@ -448,8 +455,8 @@ The following software have components provided under the terms of this license: - Lucene Grouping (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-grouping) - Lucene Highlighter (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-highlighter) - Lucene Join (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-join) -- Lucene Memory (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-memory) - Lucene Memory (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-backward-codecs) +- Lucene Memory (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-memory) - Lucene Miscellaneous (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-misc) - Lucene Queries (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-queries) - Lucene QueryParsers (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-queryparser) @@ -462,6 +469,8 @@ The following software have components provided under the terms of this license: - Maven Artifact Manager (from https://repo1.maven.org/maven2/org/apache/maven/maven-artifact-manager) - Maven Core (from https://repo1.maven.org/maven2/org/apache/maven/maven-core) - Maven Error Diagnostics (from https://repo1.maven.org/maven2/org/apache/maven/maven-error-diagnostics) +- Maven Invoker (from https://repo1.maven.org/maven2/org/apache/maven/shared/maven-invoker) +- Maven Local Settings Model (from https://repo1.maven.org/maven2/org/apache/maven/maven-settings) - Maven Model (from https://repo1.maven.org/maven2/org/apache/maven/maven-model) - Maven Monitor (from https://repo1.maven.org/maven2/org/apache/maven/maven-monitor) - Maven Plugin API (from https://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api) @@ -472,10 +481,6 @@ The following software have components provided under the terms of this license: - Maven Project Builder (from https://repo1.maven.org/maven2/org/apache/maven/maven-project) - Maven Reporting API (from https://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting-api) - Maven Repository Metadata Model (from https://repo1.maven.org/maven2/org/apache/maven/maven-repository-metadata) -- Maven Settings (from https://repo1.maven.org/maven2/org/apache/maven/maven-settings) -- Maven Wagon API (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-provider-api) -- Maven Wagon File Provider (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-file) -- Maven Wagon HTTP Shared Library (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-http-shared) - Maven Wagon Lightweight HTTP Provider (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-http-lightweight) - Maven Wagon SSH Common Library (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-ssh-common) - Maven Wagon SSH External Provider (from https://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-ssh-external) @@ -489,7 +494,7 @@ The following software have components provided under the terms of this license: - Microsoft Azure SDK for SQL API of Azure Cosmos DB Service (from https://github.com/Azure/azure-sdk-for-java) - Mockito (from http://www.mockito.org) - Mojo's Maven plugin for Cobertura (from http://mojo.codehaus.org/cobertura-maven-plugin/) -- MongoDB Driver (from http://www.mongodb.org) +- MongoDB Java Driver (from http://www.mongodb.org) - MongoDB Java Driver Core (from http://www.mongodb.org) - Netty/Buffer (from https://repo1.maven.org/maven2/io/netty/netty-buffer) - Netty/Buffer (from https://repo1.maven.org/maven2/io/netty/netty-buffer) @@ -518,16 +523,19 @@ The following software have components provided under the terms of this license: - Nimbus JOSE+JWT (from https://bitbucket.org/connect2id/nimbus-jose-jwt) - Nimbus JOSE+JWT (from https://bitbucket.org/connect2id/nimbus-jose-jwt) - Nimbus JOSE+JWT (from https://bitbucket.org/connect2id/nimbus-jose-jwt) +- Nimbus JOSE+JWT (from https://bitbucket.org/connect2id/nimbus-jose-jwt) - Nimbus LangTag (from https://bitbucket.org/connect2id/nimbus-language-tags) - Nimbus LangTag (from https://bitbucket.org/connect2id/nimbus-language-tags) -- Non-Blocking Reactive Foundation for the JVM (from https://github.com/reactor/reactor) +- Non-Blocking Reactive Foundation for the JVM (from https://github.com/reactor/reactor-core) +- OAuth 2.0 SDK with OpenID Connect extensions (from https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions) - OAuth 2.0 SDK with OpenID Connect extensions (from https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions) - OAuth 2.0 SDK with OpenID Connect extensions (from https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions) - OAuth 2.0 SDK with OpenID Connect extensions (from https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions) - OAuth2 for Spring Security (from https://repo1.maven.org/maven2/org/springframework/security/oauth/spring-security-oauth2) - OAuth2 for Spring Security (from https://repo1.maven.org/maven2/org/springframework/security/oauth/spring-security-oauth2) - Objenesis (from http://objenesis.org) -- OkHttp Logging Interceptor (from https://repo1.maven.org/maven2/com/squareup/okhttp3/logging-interceptor) +- Okio (from https://github.com/square/okio/) +- Okio (from https://github.com/square/okio/) - OpenCensus (from https://github.com/census-instrumentation/opencensus-java) - OpenCensus (from https://github.com/census-instrumentation/opencensus-java) - OpenCensus (from https://github.com/census-instrumentation/opencensus-java) @@ -537,8 +545,9 @@ The following software have components provided under the terms of this license: - OpenCensus (from https://github.com/census-instrumentation/opencensus-java) - OpenCensus (from https://github.com/census-instrumentation/opencensus-java) - PWDB :: Database (from https://repo1.maven.org/maven2/org/linguafranca/pwdb/database) -- Plexus Common Utilities (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils) -- Plexus Velocity Component (from ) +- Plexus :: Default Container (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default) +- Plexus Common Utilities (from http://plexus.codehaus.org/plexus-utils) +- Plexus Velocity Component (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-velocity) - PowerMock (from http://www.powermock.org) - PowerMock (from http://www.powermock.org) - PowerMock (from http://www.powermock.org) @@ -546,57 +555,43 @@ The following software have components provided under the terms of this license: - PowerMock (from http://www.powermock.org) - PowerMock (from http://www.powermock.org) - Protocol Buffer extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-protobuf) -- Proton-J (from https://repo1.maven.org/maven2/org/apache/qpid/proton-j) -- QpidJMS Client (from ) +- Protocol Buffer extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-protobuf) +- QpidJMS Client (from https://repo1.maven.org/maven2/org/apache/qpid/qpid-jms-client) - RabbitMQ Java Client (from http://www.rabbitmq.com) - Reactive Streams Netty driver (from https://github.com/reactor/reactor-netty) - Retrofit (from https://repo1.maven.org/maven2/com/squareup/retrofit2/retrofit) - Servlet Specification 2.5 API (from http://jetty.mortbay.org) - SnakeYAML (from http://www.snakeyaml.org) - Spatial4J (from http://www.locationtech.org/projects/locationtech.spatial4j) -- Spring AMQP Core (from https://projects.spring.io/spring-amqp) -- Spring AOP (from https://github.com/spring-projects/spring-framework) -- Spring Beans (from https://github.com/spring-projects/spring-framework) -- Spring Boot (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot) -- Spring Boot AMQP Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-amqp) -- Spring Boot AOP Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-aop) -- Spring Boot Actuator (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-actuator) -- Spring Boot Actuator AutoConfigure (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-actuator-autoconfigure) -- Spring Boot Actuator Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-actuator) -- Spring Boot AutoConfigure (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-autoconfigure) -- Spring Boot Configuration Processor (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-tools/spring-boot-configuration-processor) -- Spring Boot Jersey Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-jersey) +- Spring AMQP Core (from https://github.com/spring-projects/spring-amqp) +- Spring Beans (from https://github.com/SpringSource/spring-framework) +- Spring Boot (from http://projects.spring.io/spring-boot/) +- Spring Boot AutoConfigure (from http://projects.spring.io/spring-boot/) +- Spring Boot Configuration Processor (from http://projects.spring.io/spring-boot/) - Spring Boot Json Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-json) -- Spring Boot Logging Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-logging) -- Spring Boot Reactor Netty Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-reactor-netty) -- Spring Boot Security Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-security) -- Spring Boot Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter) -- Spring Boot Test (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-test) -- Spring Boot Test Auto-Configure (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-test-autoconfigure) -- Spring Boot Test Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-test) +- Spring Boot Log4j 2 Starter (from https://projects.spring.io/spring-boot/) +- Spring Boot Logging Starter (from http://projects.spring.io/spring-boot/) +- Spring Boot Starter (from http://projects.spring.io/spring-boot/) +- Spring Boot Test (from http://projects.spring.io/spring-boot/) +- Spring Boot Test Auto-Configure (from http://projects.spring.io/spring-boot/) +- Spring Boot Test Starter (from http://projects.spring.io/spring-boot/) - Spring Boot Tomcat Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-tomcat) -- Spring Boot Validation Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-validation) - Spring Boot Web Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-web) -- Spring Boot WebFlux Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-webflux) - Spring Commons Logging Bridge (from https://github.com/spring-projects/spring-framework) -- Spring Context (from https://github.com/spring-projects/spring-framework) -- Spring Core (from https://github.com/spring-projects/spring-framework) +- Spring Core (from https://github.com/SpringSource/spring-framework) - Spring Data Core (from https://repo1.maven.org/maven2/org/springframework/data/spring-data-commons) - Spring Data Core (from https://repo1.maven.org/maven2/org/springframework/data/spring-data-commons) - Spring Data MongoDB - Core (from https://repo1.maven.org/maven2/org/springframework/data/spring-data-mongodb) -- Spring Expression Language (SpEL) (from https://github.com/spring-projects/spring-framework) -- Spring JMS (from https://github.com/spring-projects/spring-framework) +- Spring Framework: JMS (from http://www.springframework.org) +- Spring Framework: Web (from http://www.springframework.org) +- Spring Framework: WebMVC (from http://www.springframework.org) - Spring Messaging (from https://github.com/spring-projects/spring-framework) - Spring Plugin - Metadata Extension (from https://repo1.maven.org/maven2/org/springframework/plugin/spring-plugin-metadata) - Spring Plugin Core (from https://repo1.maven.org/maven2/org/springframework/plugin/spring-plugin-core) -- Spring RabbitMQ Support (from https://projects.spring.io/spring-amqp) +- Spring RabbitMQ Support (from https://github.com/spring-projects/spring-amqp) - Spring Retry (from https://www.springsource.org) -- Spring Security JWT Library (from https://github.com/spring-projects/spring-security-oauth) -- Spring Security JWT Library (from https://github.com/spring-projects/spring-security-oauth) -- Spring TestContext Framework (from https://github.com/spring-projects/spring-framework) -- Spring Transaction (from https://github.com/spring-projects/spring-framework) -- Spring Web (from https://github.com/spring-projects/spring-framework) -- Spring Web MVC (from https://github.com/spring-projects/spring-framework) +- Spring Security JWT Library (from http://github.com/spring-projects/spring-security-oauth) +- Spring Security JWT Library (from http://github.com/spring-projects/spring-security-oauth) - Spring WebFlux (from https://github.com/spring-projects/spring-framework) - T-Digest (from https://github.com/tdunning/t-digest) - Vavr (from http://vavr.io) @@ -608,10 +603,9 @@ The following software have components provided under the terms of this license: - Zipkin Reporter: Core (from https://repo1.maven.org/maven2/io/zipkin/reporter2/zipkin-reporter) - aalto-xml (from ) - aggs-matrix-stats (from https://github.com/elastic/elasticsearch) -- asm (from http://asm.ow2.io/) -- asm (from http://asm.ow2.io/) +- commons-digester (from https://repo1.maven.org/maven2/commons-digester/commons-digester) - compiler (from http://github.com/spullara/mustache.java) -- core (from https://github.com/elastic/elasticsearch) +- datastore-v1-proto-client (from https://repo1.maven.org/maven2/com/google/cloud/datastore/datastore-v1-proto-client) - datastore-v1-proto-client (from https://repo1.maven.org/maven2/com/google/cloud/datastore/datastore-v1-proto-client) - elasticsearch-cli (from https://github.com/elastic/elasticsearch) - elasticsearch-core (from https://github.com/elastic/elasticsearch) @@ -622,7 +616,6 @@ The following software have components provided under the terms of this license: - error-prone annotations (from https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations) - error-prone annotations (from https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations) - grpc-google-cloud-pubsub-v1 (from https://repo1.maven.org/maven2/com/google/api/grpc/grpc-google-cloud-pubsub-v1) -- grpc-google-cloud-pubsub-v1 (from https://repo1.maven.org/maven2/com/google/api/grpc/grpc-google-cloud-pubsub-v1) - io.grpc:grpc-alts (from https://github.com/grpc/grpc-java) - io.grpc:grpc-alts (from https://github.com/grpc/grpc-java) - io.grpc:grpc-api (from https://github.com/grpc/grpc-java) @@ -652,7 +645,7 @@ The following software have components provided under the terms of this license: - io.grpc:grpc-stub (from https://github.com/grpc/grpc-java) - ion-java (from https://github.com/amznlabs/ion-java/) - ion-java (from https://github.com/amznlabs/ion-java/) -- jackson-databind (from http://github.com/FasterXML/jackson) +- jackson-databind (from http://wiki.fasterxml.com/JacksonHome) - java-cloudant (from https://cloudant.com) - java-cloudant (from https://cloudant.com) - javatuples (from http://www.javatuples.org) @@ -671,7 +664,7 @@ The following software have components provided under the terms of this license: - jersey-spring4 (from https://repo1.maven.org/maven2/org/glassfish/jersey/ext/jersey-spring4) - jose4j (from https://bitbucket.org/b_c/jose4j/) - lang-mustache (from https://github.com/elastic/elasticsearch) -- lettuce (from https://github.com/lettuce-io/lettuce-core/wiki) +- lettuce (from http://github.com/mp911de/lettuce/wiki) - mapper-extras (from https://github.com/elastic/elasticsearch) - micrometer-core (from https://github.com/micrometer-metrics/micrometer) - micrometer-registry-azure-monitor (from https://github.com/micrometer-metrics/micrometer) @@ -682,10 +675,9 @@ The following software have components provided under the terms of this license: - nio-stream-storage (from https://github.com/synchronoss/nio-stream-storage) - okhttp (from https://square.github.io/okhttp/) - okhttp (from https://square.github.io/okhttp/) -- okhttp-urlconnection (from https://github.com/square/okhttp) -- okhttp-urlconnection (from https://github.com/square/okhttp) -- okio (from https://github.com/square/okio/) -- okio (from https://github.com/square/okio/) +- okhttp-logging-interceptor (from https://square.github.io/okhttp/) +- okhttp-urlconnection (from https://square.github.io/okhttp/) +- okhttp-urlconnection (from https://square.github.io/okhttp/) - org.conscrypt:conscrypt-openjdk-uber (from https://conscrypt.org/) - org.xmlunit:xmlunit-core (from http://www.xmlunit.org/) - parent-join (from https://github.com/elastic/elasticsearch) @@ -694,38 +686,56 @@ The following software have components provided under the terms of this license: - proto-google-cloud-datastore-v1 (from https://github.com/googleapis/java-datastore/proto-google-cloud-datastore-v1) - proto-google-cloud-datastore-v1 (from https://github.com/googleapis/java-datastore/proto-google-cloud-datastore-v1) - proto-google-cloud-iamcredentials-v1 (from https://github.com/googleapis/java-iamcredentials/proto-google-cloud-iamcredentials-v1) -- proto-google-cloud-logging-v2 (from https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-cloud-logging-v2) -- proto-google-cloud-logging-v2 (from https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-cloud-logging-v2) -- proto-google-cloud-pubsub-v1 (from https://github.com/googleapis/java-pubsub/proto-google-cloud-pubsub-v1) -- proto-google-cloud-pubsub-v1 (from https://github.com/googleapis/java-pubsub/proto-google-cloud-pubsub-v1) +- proto-google-cloud-iamcredentials-v1 (from https://github.com/googleapis/java-iamcredentials/proto-google-cloud-iamcredentials-v1) +- proto-google-cloud-logging-v2 (from https://github.com/googleapis/java-logging/proto-google-cloud-logging-v2) +- proto-google-cloud-logging-v2 (from https://github.com/googleapis/java-logging/proto-google-cloud-logging-v2) +- proto-google-cloud-pubsub-v1 (from https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-cloud-pubsub-v1) +- proto-google-cloud-pubsub-v1 (from https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-cloud-pubsub-v1) - proto-google-common-protos (from https://github.com/googleapis/java-iam/proto-google-common-protos) - proto-google-common-protos (from https://github.com/googleapis/java-iam/proto-google-common-protos) - proto-google-common-protos (from https://github.com/googleapis/java-iam/proto-google-common-protos) - proto-google-iam-v1 (from https://github.com/googleapis/java-iam/proto-google-iam-v1) +- proto-google-iam-v1 (from https://github.com/googleapis/java-iam/proto-google-iam-v1) +- proton-j (from https://repo1.maven.org/maven2/org/apache/qpid/proton-j) - rank-eval (from https://github.com/elastic/elasticsearch) +- resilience4j (from https://github.com/resilience4j/resilience4j) - resilience4j (from https://resilience4j.readme.io) +- resilience4j (from https://github.com/resilience4j/resilience4j) - resilience4j (from https://resilience4j.readme.io) +- resilience4j (from https://github.com/resilience4j/resilience4j) - resilience4j (from https://resilience4j.readme.io) -- resilience4j (from https://resilience4j.readme.io) -- resilience4j (from https://resilience4j.readme.io) -- resilience4j (from https://resilience4j.readme.io) -- resilience4j (from https://resilience4j.readme.io) +- resilience4j (from https://github.com/resilience4j/resilience4j) - resilience4j (from https://resilience4j.readme.io) - rest (from https://github.com/elastic/elasticsearch) - rest-high-level (from https://github.com/elastic/elasticsearch) - rxjava (from https://github.com/ReactiveX/RxJava) +- server (from https://github.com/elastic/elasticsearch) +- spring-aop (from https://repo1.maven.org/maven2/org/springframework/spring-aop) +- spring-boot-actuator (from https://spring.io/projects/spring-boot) +- spring-boot-actuator-autoconfigure (from https://spring.io/projects/spring-boot) - spring-boot-dependencies (from https://spring.io/projects/spring-boot) +- spring-boot-starter-actuator (from https://spring.io/projects/spring-boot) +- spring-boot-starter-amqp (from https://spring.io/projects/spring-boot) +- spring-boot-starter-aop (from https://spring.io/projects/spring-boot) - spring-boot-starter-data-mongodb (from https://spring.io/projects/spring-boot) -- spring-boot-starter-log4j2 (from https://spring.io/projects/spring-boot) -- spring-security-config (from http://spring.io/spring-security) -- spring-security-core (from http://spring.io/spring-security) -- spring-security-oauth2-client (from http://spring.io/spring-security) -- spring-security-oauth2-core (from http://spring.io/spring-security) -- spring-security-oauth2-jose (from http://spring.io/spring-security) -- spring-security-oauth2-jose (from http://spring.io/spring-security) -- spring-security-oauth2-resource-server (from http://spring.io/spring-security) -- spring-security-test (from http://spring.io/spring-security) -- spring-security-web (from http://spring.io/spring-security) +- spring-boot-starter-jersey (from https://spring.io/projects/spring-boot) +- spring-boot-starter-reactor-netty (from https://spring.io/projects/spring-boot) +- spring-boot-starter-security (from https://spring.io/projects/spring-boot) +- spring-boot-starter-validation (from https://spring.io/projects/spring-boot) +- spring-boot-starter-webflux (from https://spring.io/projects/spring-boot) +- spring-context (from https://repo1.maven.org/maven2/org/springframework/spring-context) +- spring-expression (from https://repo1.maven.org/maven2/org/springframework/spring-expression) +- spring-security-config (from https://spring.io/projects/spring-security) +- spring-security-core (from https://spring.io/projects/spring-security) +- spring-security-oauth2-client (from https://spring.io/projects/spring-security) +- spring-security-oauth2-core (from https://spring.io/projects/spring-security) +- spring-security-oauth2-jose (from https://spring.io/projects/spring-security) +- spring-security-oauth2-jose (from https://spring.io/projects/spring-security) +- spring-security-oauth2-resource-server (from https://spring.io/projects/spring-security) +- spring-security-test (from https://spring.io/projects/spring-security) +- spring-security-web (from https://spring.io/projects/spring-security) +- spring-test (from https://repo1.maven.org/maven2/org/springframework/spring-test) +- spring-tx (from https://repo1.maven.org/maven2/org/springframework/spring-tx) - springfox-core (from https://github.com/springfox/springfox) - springfox-schema (from https://github.com/springfox/springfox) - springfox-spi (from https://github.com/springfox/springfox) @@ -734,11 +744,11 @@ The following software have components provided under the terms of this license: - springfox-swagger-ui (from https://github.com/springfox/springfox) - springfox-swagger2 (from https://github.com/springfox/springfox) - swagger-annotations (from https://repo1.maven.org/maven2/io/swagger/swagger-annotations) -- swagger-jaxrs (from ) +- swagger-jaxrs (from https://repo1.maven.org/maven2/io/swagger/swagger-jaxrs) - swagger-models (from https://repo1.maven.org/maven2/io/swagger/swagger-models) -- tomcat-annotations-api (from https://tomcat.apache.org/) +- tomcat-annotations-api (from http://tomcat.apache.org/) - tomcat-embed-core (from http://tomcat.apache.org/) -- tomcat-embed-el (from https://tomcat.apache.org/) +- tomcat-embed-el (from http://tomcat.apache.org/) - tomcat-embed-websocket (from https://tomcat.apache.org/) - xml-apis (from ) @@ -756,11 +766,11 @@ The following software have components provided under the terms of this license: - GAX (Google Api eXtensions) for Java (from https://github.com/googleapis/gax-java) - GAX (Google Api eXtensions) for Java (from https://github.com/googleapis/gax-java) - Lucene Common Analyzers (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-analyzers-common) -- Lucene Core (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-core) -- Plexus Common Utilities (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils) +- Plexus Common Utilities (from http://plexus.codehaus.org/plexus-utils) - Reflections (from http://github.com/ronmamo/reflections) - Stax2 API (from http://github.com/FasterXML/stax2-api) - ThreeTen backport (from https://www.threeten.org/threetenbp) +- ThreeTen backport (from https://www.threeten.org/threetenbp) - jersey-ext-bean-validation (from https://repo1.maven.org/maven2/org/glassfish/jersey/ext/jersey-bean-validation) - jersey-spring4 (from https://repo1.maven.org/maven2/org/glassfish/jersey/ext/jersey-spring4) @@ -783,6 +793,7 @@ The following software have components provided under the terms of this license: - Google Auth Library for Java - Credentials (from https://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials) - Google Auth Library for Java - Credentials (from https://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials) - Google Auth Library for Java - OAuth2 HTTP (from https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http) +- Google Auth Library for Java - OAuth2 HTTP (from https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http) - Jakarta Activation API jar (from https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api) - Jakarta XML Binding API (from https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api) - Lucene Common Analyzers (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-analyzers-common) @@ -794,7 +805,7 @@ The following software have components provided under the terms of this license: - Mockito (from http://www.mockito.org) - Netty/Codec/HTTP (from https://repo1.maven.org/maven2/io/netty/netty-codec-http) - Netty/Codec/HTTP (from https://repo1.maven.org/maven2/io/netty/netty-codec-http) -- Plexus Common Utilities (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils) +- Plexus Common Utilities (from http://plexus.codehaus.org/plexus-utils) - Protocol Buffers [Core] (from https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java) - Protocol Buffers [Core] (from https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java) - Protocol Buffers [Core] (from https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java) @@ -802,7 +813,8 @@ The following software have components provided under the terms of this license: - Protocol Buffers [Util] (from https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java-util) - Reflections (from http://github.com/ronmamo/reflections) - SnakeYAML (from http://www.snakeyaml.org) -- Spring Core (from https://github.com/spring-projects/spring-framework) +- Spring Core (from https://github.com/SpringSource/spring-framework) +- ThreeTen backport (from https://www.threeten.org/threetenbp) - ThreeTen backport (from https://www.threeten.org/threetenbp) - asm (from http://asm.ow2.io/) - asm (from http://asm.ow2.io/) @@ -812,7 +824,7 @@ The following software have components provided under the terms of this license: - asm-tree (from http://asm.ow2.io/) - asm-util (from http://asm.ow2.io/) - classworlds (from http://classworlds.codehaus.org/) -- jaxen (from http://www.cafeconleche.org/jaxen) +- jaxen (from http://jaxen.codehaus.org/) - jersey-container-servlet (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet) - jersey-container-servlet-core (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core) - jersey-core-client (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client) @@ -887,7 +899,7 @@ The following software have components provided under the terms of this license: - JavaBeans Activation Framework (from ) - JavaBeans(TM) Activation Framework (from http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp) - JavaMail API (from https://repo1.maven.org/maven2/com/sun/mail/javax.mail) -- OSGi resource locator (from ) +- OSGi resource locator (from https://repo1.maven.org/maven2/org/glassfish/hk2/osgi-resource-locator) - Servlet Specification 2.5 API (from http://jetty.mortbay.org) - javax.annotation-api (from http://jcp.org/en/jsr/detail?id=250) - jersey-ext-bean-validation (from https://repo1.maven.org/maven2/org/glassfish/jersey/ext/jersey-bean-validation) @@ -902,26 +914,17 @@ The following software have components provided under the terms of this license: - JUnit (from http://junit.org) - System Rules (from http://stefanbirkner.github.io/system-rules/) -======================================================================== -DOC -======================================================================== -The following software have components provided under the terms of this license: - -- JDOM (from http://www.jdom.org) -- Lucene Core (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-core) -- Woodstox (from https://github.com/FasterXML/woodstox) - ======================================================================== EPL-1.0 ======================================================================== The following software have components provided under the terms of this license: -- AspectJ Weaver (from https://www.eclipse.org/aspectj/) -- Logback Classic Module (from https://repo1.maven.org/maven2/ch/qos/logback/logback-classic) +- AspectJ weaver (from http://www.aspectj.org) +- Logback Classic Module (from http://logback.qos.ch) - Logback Contrib :: JSON :: Classic (from https://repo1.maven.org/maven2/ch/qos/logback/contrib/logback-json-classic) - Logback Contrib :: JSON :: Core (from https://repo1.maven.org/maven2/ch/qos/logback/contrib/logback-json-core) - Logback Contrib :: Jackson (from https://repo1.maven.org/maven2/ch/qos/logback/contrib/logback-jackson) -- Logback Core Module (from https://repo1.maven.org/maven2/ch/qos/logback/logback-core) +- Logback Core Module (from http://logback.qos.ch) - Microsoft Application Insights Java SDK Spring Boot starter (from https://github.com/Microsoft/ApplicationInsights-Java) - Microsoft Application Insights Java SDK Web Module (from https://github.com/Microsoft/ApplicationInsights-Java) - Microsoft Application Insights Log4j 2 Appender (from https://github.com/Microsoft/ApplicationInsights-Java) @@ -949,7 +952,7 @@ The following software have components provided under the terms of this license: - Java Servlet API (from http://servlet-spec.java.net) - JavaBeans Activation Framework (from ) - Mojo's Maven plugin for Cobertura (from http://mojo.codehaus.org/cobertura-maven-plugin/) -- OSGi resource locator (from ) +- OSGi resource locator (from https://repo1.maven.org/maven2/org/glassfish/hk2/osgi-resource-locator) - RabbitMQ Java Client (from http://www.rabbitmq.com) - Run Level Service (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-runlevel) - ServiceLocator Default Implementation (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-locator) @@ -989,7 +992,7 @@ The following software have components provided under the terms of this license: - Java Architecture for XML Binding (from http://jaxb.java.net/) - Java Servlet API (from http://servlet-spec.java.net) - JavaBeans Activation Framework (from ) -- OSGi resource locator (from ) +- OSGi resource locator (from https://repo1.maven.org/maven2/org/glassfish/hk2/osgi-resource-locator) - RabbitMQ Java Client (from http://www.rabbitmq.com) - ServiceLocator Default Implementation (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-locator) - aopalliance-repackaged (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged) @@ -1013,24 +1016,9 @@ GPL-3.0-only ======================================================================== The following software have components provided under the terms of this license: -- Project Lombok (from https://projectlombok.org) +- Project Lombok (from http://projectlombok.org) - javax.ws.rs-api (from http://jax-rs-spec.java.net) -======================================================================== -ImageMagick -======================================================================== -The following software have components provided under the terms of this license: - -- Stax2 API (from http://github.com/FasterXML/stax2-api) -- Woodstox (from https://github.com/FasterXML/woodstox) - -======================================================================== -Info-ZIP -======================================================================== -The following software have components provided under the terms of this license: - -- Apache Ant Core (from https://ant.apache.org/) - ======================================================================== JSON ======================================================================== @@ -1045,16 +1033,16 @@ The following software have components provided under the terms of this license: - Cobertura (from http://cobertura.sourceforge.net) - Commons Lang (from http://commons.apache.org/lang/) -- Elastic JNA Distribution (from https://github.com/elastic/jna-build) +- Elastic JNA Distribution (from https://github.com/java-native-access/jna) - Java Native Access (from https://github.com/java-native-access/jna) - Java Native Access Platform (from https://github.com/java-native-access/jna) - Javassist (from http://www.javassist.org/) - Javassist (from http://www.javassist.org/) -- Logback Classic Module (from https://repo1.maven.org/maven2/ch/qos/logback/logback-classic) +- Logback Classic Module (from http://logback.qos.ch) - Logback Contrib :: JSON :: Classic (from https://repo1.maven.org/maven2/ch/qos/logback/contrib/logback-json-classic) - Logback Contrib :: JSON :: Core (from https://repo1.maven.org/maven2/ch/qos/logback/contrib/logback-json-core) - Logback Contrib :: Jackson (from https://repo1.maven.org/maven2/ch/qos/logback/contrib/logback-jackson) -- Logback Core Module (from https://repo1.maven.org/maven2/ch/qos/logback/logback-core) +- Logback Core Module (from http://logback.qos.ch) - Microsoft Application Insights Java SDK Spring Boot starter (from https://github.com/Microsoft/ApplicationInsights-Java) - Microsoft Application Insights Java SDK Web Module (from https://github.com/Microsoft/ApplicationInsights-Java) - Microsoft Application Insights Log4j 2 Appender (from https://github.com/Microsoft/ApplicationInsights-Java) @@ -1096,8 +1084,6 @@ The following software have components provided under the terms of this license: - Checker Qual (from https://checkerframework.org) - Checker Qual (from https://checkerframework.org) - Checker Qual (from https://checkerframework.org) -- Default Plexus Container (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default) -- Extensions on Apache Proton-J library (from https://github.com/Azure/qpid-proton-j-extensions) - JOpt Simple (from http://pholser.github.com/jopt-simple) - JUL to SLF4J bridge (from http://www.slf4j.org) - Java Client Runtime for AutoRest (from https://github.com/Azure/autorest-clientruntime-for-java) @@ -1114,7 +1100,6 @@ The following software have components provided under the terms of this license: - Microsoft Azure SDK for Service Bus (from https://github.com/Azure/azure-sdk-for-java) - Microsoft Azure SDK for eventgrid (from https://github.com/Azure/azure-sdk-for-java) - Microsoft Azure client library for Blob Storage (from https://github.com/Azure/azure-sdk-for-java) -- Microsoft Azure client library for Identity (from https://github.com/Azure/azure-sdk-for-java) - Microsoft Azure client library for KeyVault Keys (from https://github.com/Azure/azure-sdk-for-java) - Microsoft Azure client library for KeyVault Secrets (from https://github.com/Azure/azure-sdk-for-java) - Microsoft Azure common module for Storage (from https://github.com/Azure/azure-sdk-for-java) @@ -1124,13 +1109,15 @@ The following software have components provided under the terms of this license: - Netty/Codec/HTTP (from https://repo1.maven.org/maven2/io/netty/netty-codec-http) - Netty/Common (from https://repo1.maven.org/maven2/io/netty/netty-common) - Netty/Common (from https://repo1.maven.org/maven2/io/netty/netty-common) +- Plexus :: Default Container (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default) - Plexus Default Interactivity Handler (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-interactivity-api) -- Project Lombok (from https://projectlombok.org) +- Project Lombok (from http://projectlombok.org) - SLF4J API Module (from http://www.slf4j.org) - Spongy Castle (from http://rtyley.github.io/spongycastle/) - Spring Data for Azure Cosmos DB SQL API (from https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/cosmos/azure-spring-data-cosmos) - adal4j (from https://github.com/AzureAD/azure-activedirectory-library-for-java) -- azure-documentdb (from https://azure.microsoft.com/en-us/services/cosmos-db/) +- azure-documentdb (from http://azure.microsoft.com/en-us/services/documentdb/) +- azure-identity (from https://repo1.maven.org/maven2/com/azure/azure-identity) - documentdb-bulkexecutor (from http://azure.microsoft.com/en-us/services/documentdb/) - java jwt (from https://github.com/auth0/java-jwt) - micrometer-core (from https://github.com/micrometer-metrics/micrometer) @@ -1139,7 +1126,8 @@ The following software have components provided under the terms of this license: - mockito-core (from http://mockito.org) - msal4j (from https://github.com/AzureAD/microsoft-authentication-library-for-java) - msal4j-persistence-extension (from https://github.com/AzureAD/microsoft-authentication-extensions-for-java) -- spring-security-core (from http://spring.io/spring-security) +- qpid-proton-j-extensions (from https://github.com/Azure/qpid-proton-j-extensions) +- spring-security-core (from https://spring.io/projects/spring-security) ======================================================================== MPL-1.1 @@ -1181,7 +1169,7 @@ Public-Domain ======================================================================== The following software have components provided under the terms of this license: -- Plexus Common Utilities (from https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils) +- Plexus Common Utilities (from http://plexus.codehaus.org/plexus-utils) - Spongy Castle (from http://rtyley.github.io/spongycastle/) - jersey-core-common (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common) - jersey-core-server (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-server) @@ -1192,7 +1180,7 @@ SAX-PD ======================================================================== The following software have components provided under the terms of this license: -- Apache Ant Core (from https://ant.apache.org/) +- Apache Ant Core (from http://ant.apache.org/) ======================================================================== SPL-1.0 @@ -1210,22 +1198,15 @@ The following software have components provided under the terms of this license: - Lucene Core (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-core) -======================================================================== -TCL -======================================================================== -The following software have components provided under the terms of this license: - -- HK2 API module (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-api) - ======================================================================== W3C ======================================================================== The following software have components provided under the terms of this license: -- Apache Ant Core (from https://ant.apache.org/) +- Apache Ant Core (from http://ant.apache.org/) - JTidy (from http://jtidy.sourceforge.net) - Xerces2-j (from https://xerces.apache.org/xerces2-j/) -- jaxen (from http://www.cafeconleche.org/jaxen) +- jaxen (from http://jaxen.codehaus.org/) - xml-apis (from ) ======================================================================== @@ -1235,13 +1216,6 @@ The following software have components provided under the terms of this license: - Reflections (from http://github.com/ronmamo/reflections) -======================================================================== -X11 -======================================================================== -The following software have components provided under the terms of this license: - -- Lucene Core (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-core) - ======================================================================== public-domain ======================================================================== @@ -1253,8 +1227,8 @@ The following software have components provided under the terms of this license: - Bouncy Castle PKIX, CMS, EAC, TSP, PKCS, OCSP, CMP, and CRMF APIs (from http://www.bouncycastle.org/java.html) - Bouncy Castle Provider (from http://www.bouncycastle.org/java.html) - Bouncy Castle Provider (from http://www.bouncycastle.org/java.html) -- Guava: Google Core Libraries for Java (from https://github.com/google/guava) -- Guava: Google Core Libraries for Java (from https://github.com/google/guava) +- Guava: Google Core Libraries for Java (from https://repo1.maven.org/maven2/com/google/guava/guava) +- Guava: Google Core Libraries for Java (from https://repo1.maven.org/maven2/com/google/guava/guava) - HdrHistogram (from http://hdrhistogram.github.io/HdrHistogram/) - JTidy (from http://jtidy.sourceforge.net) - Joda-Time (from https://www.joda.org/joda-time/) @@ -1263,12 +1237,12 @@ The following software have components provided under the terms of this license: - Microsoft Azure SDK for EventGrid Management (from https://github.com/Azure/azure-sdk-for-java) - Microsoft Azure SDK for SQL API of Azure Cosmos DB Service (from https://github.com/Azure/azure-sdk-for-java) - Microsoft Azure client library for Blob Storage (from https://github.com/Azure/azure-sdk-for-java) -- Project Lombok (from https://projectlombok.org) +- Project Lombok (from http://projectlombok.org) - RabbitMQ Java Client (from http://www.rabbitmq.com) -- Spring Security JWT Library (from https://github.com/spring-projects/spring-security-oauth) -- Spring Security JWT Library (from https://github.com/spring-projects/spring-security-oauth) -- Spring Web (from https://github.com/spring-projects/spring-framework) -- azure-documentdb (from https://azure.microsoft.com/en-us/services/cosmos-db/) +- Spring Framework: Web (from http://www.springframework.org) +- Spring Security JWT Library (from http://github.com/spring-projects/spring-security-oauth) +- Spring Security JWT Library (from http://github.com/spring-projects/spring-security-oauth) +- azure-documentdb (from http://azure.microsoft.com/en-us/services/documentdb/) - msal4j (from https://github.com/AzureAD/microsoft-authentication-library-for-java) - reactive-streams (from http://www.reactive-streams.org/) - xml-apis (from ) @@ -1286,12 +1260,11 @@ The following software have components provided under the terms of this license: - Checker Qual (from https://checkerframework.org) - JSON in Java (from https://github.com/douglascrockford/JSON-java) - JTidy (from http://jtidy.sourceforge.net) -- JUnit (from http://junit.org) - Jakarta Activation API jar (from https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api) - Jakarta XML Binding API (from https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api) - Spongy Castle (from http://rtyley.github.io/spongycastle/) - System Rules (from http://stefanbirkner.github.io/system-rules/) -- jaxen (from http://www.cafeconleche.org/jaxen) +- jaxen (from http://jaxen.codehaus.org/) - jersey-container-servlet (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet) - jersey-container-servlet-core (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core) - jersey-core-client (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client) diff --git a/devops/azure/chart/templates/deployment.yaml b/devops/azure/chart/templates/deployment.yaml index b7baad43d37c4a2d2613da1b2b5f12c56817f663..9b1dad7ab80b934951d01745696577ce3ffd08bd 100644 --- a/devops/azure/chart/templates/deployment.yaml +++ b/devops/azure/chart/templates/deployment.yaml @@ -52,8 +52,14 @@ spec: cpu: "500m" readinessProbe: httpGet: - path: /api/indexer/v2/swagger-ui.html - port: 80 + path: /actuator/health + port: 8081 + livenessProbe: + httpGet: + path: /actuator/health + port: 8081 + initialDelaySeconds: 250 + periodSeconds: 10 volumeMounts: - name: azure-keyvault mountPath: "/mnt/azure-keyvault" diff --git a/indexer-core/pom.xml b/indexer-core/pom.xml index 2ff7f227edea60a4fe75867c589546d459df2af8..5d22078538a844775b5b495b2f2ddb6c3533ecf9 100644 --- a/indexer-core/pom.xml +++ b/indexer-core/pom.xml @@ -16,7 +16,7 @@ <properties> <commons-beanutils.version>1.9.4</commons-beanutils.version> - <osdu.oscorecommon.version>0.11.0-rc4</osdu.oscorecommon.version> + <osdu.oscorecommon.version>0.12.0-rc3</osdu.oscorecommon.version> </properties> <dependencies> diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCore.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCore.java index b6323ac4554024cfc82171b8ea74924812498d3d..c34001666b0c993dae73df6d792caa8d93e6067a 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCore.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCore.java @@ -17,6 +17,8 @@ package org.opengroup.osdu.indexer.error; import javax.validation.ValidationException; import javassist.NotFoundException; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.opengroup.osdu.core.common.logging.JaxRsDpsLog; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.Ordered; @@ -29,6 +31,8 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; import org.opengroup.osdu.core.common.model.http.AppException; +import java.io.IOException; + @Order(Ordered.HIGHEST_PRECEDENCE - 1) @ControllerAdvice public class GlobalExceptionMapperCore extends ResponseEntityExceptionHandler { @@ -59,6 +63,17 @@ public class GlobalExceptionMapperCore extends ResponseEntityExceptionHandler { new AppException(HttpStatus.FORBIDDEN.value(), "Access denied", e.getMessage(), e)); } + @ExceptionHandler(IOException.class) + public ResponseEntity<Object> handleIOException(IOException e) { + if (StringUtils.containsIgnoreCase(ExceptionUtils.getRootCauseMessage(e), "Broken pipe")) { + this.logger.warning("Client closed the connection while request still being processed"); + return null; + } else { + return this.getErrorResponse( + new AppException(HttpStatus.SERVICE_UNAVAILABLE.value(), "Unknown error", e.getMessage(), e)); + } + } + @ExceptionHandler(Exception.class) protected ResponseEntity<Object> handleGeneralException(Exception e) { return this.getErrorResponse( diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/FeatureCollection.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/FeatureCollection.java index 2040e646469ad32cd0dd036f732657f85da7a092..1568a4250e753f336044e2911e8e30b6163487cd 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/FeatureCollection.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/FeatureCollection.java @@ -14,8 +14,10 @@ package org.opengroup.osdu.indexer.model.geojson; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import lombok.Data; +import org.opengroup.osdu.indexer.model.geojson.jackson.FeatureCollectionDeserializer; import org.opengroup.osdu.indexer.model.geojson.jackson.FeatureCollectionSerializer; import java.util.ArrayList; @@ -25,6 +27,7 @@ import java.util.List; @Data @JsonSerialize(using = FeatureCollectionSerializer.class) +@JsonDeserialize(using = FeatureCollectionDeserializer.class) public class FeatureCollection extends GeoJsonObject implements Iterable<Feature> { private List<Feature> features = new ArrayList<Feature>(); diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/Position.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/Position.java index fa124ee189a132ee0056dc05e8a2ce1bd970adfd..d578de28d0a6d9e8dbb13f30bd4dfaf1a8aa60de 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/Position.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/Position.java @@ -29,7 +29,6 @@ import java.io.Serializable; @Getter @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) -@AllArgsConstructor @JsonDeserialize(using = PositionDeserializer.class) @JsonSerialize(using = PositionSerializer.class) public class Position implements Serializable { @@ -44,6 +43,12 @@ public class Position implements Serializable { this.setLatitude(latitude); } + public Position(double longitude, double latitude, double altitude) { + this.setLongitude(longitude); + this.setLatitude(latitude); + this.altitude = altitude; + } + public void setLongitude(double longitude) { if (Double.isNaN(longitude)) throw new IllegalArgumentException("latitude must be number"); diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/jackson/FeatureCollectionDeserializer.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/jackson/FeatureCollectionDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..dc9504be28c85d915aca6ce40af798aedfe480c6 --- /dev/null +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/jackson/FeatureCollectionDeserializer.java @@ -0,0 +1,48 @@ +// Copyright © Schlumberger +// +// 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 org.opengroup.osdu.indexer.model.geojson.jackson; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import org.opengroup.osdu.indexer.model.geojson.Feature; +import org.opengroup.osdu.indexer.model.geojson.FeatureCollection; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class FeatureCollectionDeserializer extends JsonDeserializer<FeatureCollection> { + + @Override + public FeatureCollection deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + FeatureCollection featureCollection = new FeatureCollection(); + featureCollection.setFeatures(extractFeature(jsonParser)); + return featureCollection; + } + + private List<Feature> extractFeature(JsonParser jsonParser) throws IOException { + ObjectCodec codec = jsonParser.getCodec(); + JsonNode featureCollection = codec.readTree(jsonParser); + JsonNode features = featureCollection.get("features"); + final List<Feature> result = new ArrayList<>(); + for (JsonNode node : features) { + result.add(codec.treeToValue(node, Feature.class)); + } + return result; + } +} diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/jackson/FeatureCollectionSerializer.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/jackson/FeatureCollectionSerializer.java index f5d412a042655bcabed7e0840c61e5f4d8785d7c..dc78521257d6a4d4c87a0207fbc9104879648ff4 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/jackson/FeatureCollectionSerializer.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/model/geojson/jackson/FeatureCollectionSerializer.java @@ -34,7 +34,6 @@ public class FeatureCollectionSerializer extends JsonSerializer<FeatureCollectio jsonGenerator.writeArrayFieldStart("geometries"); for (Feature feature : value.getFeatures()) { - jsonGenerator.writeStartObject(); if (feature.getGeometry() instanceof GeometryCollection) { GeometryCollection geometryCollection = (GeometryCollection) feature.getGeometry(); for (GeoJsonObject shape : geometryCollection.getGeometries()) { @@ -43,7 +42,6 @@ public class FeatureCollectionSerializer extends JsonSerializer<FeatureCollectio } else { serializeGeoShape(feature.getGeometry(), jsonGenerator); } - jsonGenerator.writeEndObject(); } jsonGenerator.writeEndArray(); @@ -59,23 +57,35 @@ public class FeatureCollectionSerializer extends JsonSerializer<FeatureCollectio private void serializeGeoShape(GeoJsonObject geoJsonObject, JsonGenerator jsonGenerator) throws IOException { if (geoJsonObject instanceof Point) { + jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("type", "point"); jsonGenerator.writeObjectField("coordinates", ((Point) geoJsonObject).getCoordinates()); + jsonGenerator.writeEndObject(); } else if (geoJsonObject instanceof LineString) { + jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("type", "linestring"); jsonGenerator.writeObjectField("coordinates", ((LineString) geoJsonObject).getCoordinates()); + jsonGenerator.writeEndObject(); } else if (geoJsonObject instanceof Polygon) { + jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("type", "polygon"); jsonGenerator.writeObjectField("coordinates", ((Polygon) geoJsonObject).getCoordinates()); + jsonGenerator.writeEndObject(); } else if (geoJsonObject instanceof MultiPoint) { + jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("type", "multipoint"); jsonGenerator.writeObjectField("coordinates", ((MultiPoint) geoJsonObject).getCoordinates()); + jsonGenerator.writeEndObject(); } else if (geoJsonObject instanceof MultiLineString) { + jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("type", "multilinestring"); jsonGenerator.writeObjectField("coordinates", ((MultiLineString) geoJsonObject).getCoordinates()); + jsonGenerator.writeEndObject(); } else if (geoJsonObject instanceof MultiPolygon) { + jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("type", "multipolygon"); jsonGenerator.writeObjectField("coordinates", ((MultiPolygon) geoJsonObject).getCoordinates()); + jsonGenerator.writeEndObject(); } } } diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java index aa53ea967f6a2ddfcc7324d46caabdffd82edf5f..992c0a01fea9b1892e20eaaa31b5674028741a85 100644 --- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java +++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java @@ -29,8 +29,9 @@ import org.springframework.security.access.AccessDeniedException; import javax.validation.ValidationException; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import java.io.IOException; + +import static org.junit.Assert.*; @RunWith(PowerMockRunner.class) public class GlobalExceptionMapperCoreTest { @@ -90,4 +91,20 @@ public class GlobalExceptionMapperCoreTest { ResponseEntity<Object> response = sut.handleAppException(exception); assertEquals(RequestStatus.INVALID_RECORD, response.getStatusCodeValue()); } + + @Test + public void should_returnNullResponse_when_BrokenPipeIOExceptionIsCaptured() { + IOException ioException = new IOException("Broken pipe"); + + ResponseEntity response = this.sut.handleIOException(ioException); + assertNull(response); + } + + @Test + public void should_returnServiceUnavailable_when_IOExceptionIsCaptured() { + IOException ioException = new IOException("Not broken yet"); + + ResponseEntity response = this.sut.handleIOException(ioException); + assertEquals(HttpStatus.SC_SERVICE_UNAVAILABLE, response.getStatusCodeValue()); + } } \ No newline at end of file diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/parser/GeoShapeParserTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/parser/GeoShapeParserTest.java index 2e34f70c96326430f91e867ef4894cf9d9e90bfb..17b19f60270deafaa05d6a1fb58324229d39ad46 100644 --- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/parser/GeoShapeParserTest.java +++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/parser/GeoShapeParserTest.java @@ -44,122 +44,140 @@ public class GeoShapeParserTest { public void should_throwException_provided_emptyGeoJson() { String shapeJson = "{}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "shape not included"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "shape not included"); } @Test public void should_throwException_parseInvalidPoint() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-205.01621,39.57422]}}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "unable to parse FeatureCollection"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "unable to parse FeatureCollection"); } @Test public void should_throwException_parseInvalidPoint_NaN() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-205.01621,NaN]}}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "unable to parse FeatureCollection"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "unable to parse FeatureCollection"); } @Test public void should_throwException_parseInvalidPoint_missingLatitude() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-105.01621]}}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "unable to parse FeatureCollection"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "unable to parse FeatureCollection"); } @Test public void should_throwException_missingMandatoryAttribute() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"mistype\":\"Point\",\"coordinates\":[-205.01621,39.57422]}}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "must be a valid FeatureCollection"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "must be a valid FeatureCollection"); } @Test public void should_throwException_parseInvalidShape() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"InvalidShape\",\"coordinates\":[-105.01621,39.57422]}}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "must be a valid FeatureCollection"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "must be a valid FeatureCollection"); } @Test public void should_parseValidPoint() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-105.01621,39.57422]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"point\",\"coordinates\":[-105.01621,39.57422]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_parseValidMultiPoint() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"MultiPoint\",\"coordinates\":[[-105.01621,39.57422],[-80.666513,35.053994]]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"multipoint\",\"coordinates\":[[-105.01621,39.57422],[-80.666513,35.053994]]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_parseValidLineString() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"LineString\",\"coordinates\":[[-101.744384,39.32155],[-101.552124,39.330048],[-101.403808,39.330048],[-101.332397,39.364032],[-101.041259,39.368279],[-100.975341,39.304549],[-100.914916,39.245016],[-100.843505,39.164141],[-100.805053,39.104488],[-100.491943,39.100226],[-100.437011,39.095962],[-100.338134,39.095962],[-100.195312,39.027718],[-100.008544,39.010647],[-99.865722,39.00211],[-99.684448,38.972221],[-99.51416,38.929502],[-99.382324,38.920955],[-99.321899,38.895308],[-99.113159,38.869651],[-99.0802,38.85682],[-98.822021,38.85682],[-98.448486,38.848264],[-98.206787,38.848264],[-98.020019,38.878204],[-97.635498,38.873928]]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"linestring\",\"coordinates\":[[-101.744384,39.32155],[-101.552124,39.330048],[-101.403808,39.330048],[-101.332397,39.364032],[-101.041259,39.368279],[-100.975341,39.304549],[-100.914916,39.245016],[-100.843505,39.164141],[-100.805053,39.104488],[-100.491943,39.100226],[-100.437011,39.095962],[-100.338134,39.095962],[-100.195312,39.027718],[-100.008544,39.010647],[-99.865722,39.00211],[-99.684448,38.972221],[-99.51416,38.929502],[-99.382324,38.920955],[-99.321899,38.895308],[-99.113159,38.869651],[-99.0802,38.85682],[-98.822021,38.85682],[-98.448486,38.848264],[-98.206787,38.848264],[-98.020019,38.878204],[-97.635498,38.873928]]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_parseValidMultiLineString() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"MultiLineString\",\"coordinates\":[[[-105.021443,39.578057],[-105.021507,39.577809],[-105.021572,39.577495],[-105.021572,39.577164],[-105.021572,39.577032],[-105.021529,39.576784]],[[-105.019898,39.574997],[-105.019598,39.574898],[-105.019061,39.574782]],[[-105.017173,39.574402],[-105.01698,39.574385],[-105.016636,39.574385],[-105.016508,39.574402],[-105.01595,39.57427]],[[-105.014276,39.573972],[-105.014126,39.574038],[-105.013825,39.57417],[-105.01331,39.574452]]]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"multilinestring\",\"coordinates\":[[[-105.021443,39.578057],[-105.021507,39.577809],[-105.021572,39.577495],[-105.021572,39.577164],[-105.021572,39.577032],[-105.021529,39.576784]],[[-105.019898,39.574997],[-105.019598,39.574898],[-105.019061,39.574782]],[[-105.017173,39.574402],[-105.01698,39.574385],[-105.016636,39.574385],[-105.016508,39.574402],[-105.01595,39.57427]],[[-105.014276,39.573972],[-105.014126,39.574038],[-105.013825,39.57417],[-105.01331,39.574452]]]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_parseValidPolygon() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[100,0],[101,0],[101,1],[100,1],[100,0]]]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"polygon\",\"coordinates\":[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]]]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_throwException_parseInvalidPolygon_malformedLatitude() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[100,\"afgg\"],[101,0],[101,1],[100,1],[100,0]]]}}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "unable to parse FeatureCollection"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "unable to parse FeatureCollection"); } @Test public void should_parseValidMultiPolygon() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[107,7],[108,7],[108,8],[107,8],[107,7]]],[[[100,0],[101,0],[101,1],[100,1],[100,0]]]]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"multipolygon\",\"coordinates\":[[[[107.0,7.0],[108.0,7.0],[108.0,8.0],[107.0,8.0],[107.0,7.0]]],[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]]]]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_parseValidGeometryCollection() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"GeometryCollection\",\"geometries\":[{\"type\":\"Point\",\"coordinates\":[-80.660805,35.049392]},{\"type\":\"Polygon\",\"coordinates\":[[[-80.664582,35.044965],[-80.663874,35.04428],[-80.662586,35.04558],[-80.663444,35.046036],[-80.664582,35.044965]]]},{\"type\":\"LineString\",\"coordinates\":[[-80.662372,35.059509],[-80.662693,35.059263],[-80.662844,35.05893],[-80.66308,35.058332],[-80.663595,35.057753],[-80.663874,35.057401],[-80.66441,35.057033],[-80.664861,35.056787],[-80.665419,35.056506],[-80.665633,35.056312],[-80.666019,35.055891],[-80.666191,35.055452],[-80.666191,35.055171],[-80.666255,35.05489],[-80.666213,35.054222],[-80.666213,35.053924],[-80.665955,35.052905],[-80.665698,35.052044],[-80.665504,35.051482],[-80.665762,35.050481],[-80.66617,35.049725],[-80.666513,35.049286],[-80.666921,35.048531],[-80.667006,35.048215],[-80.667071,35.047775],[-80.667049,35.047389],[-80.666964,35.046985],[-80.666813,35.046353],[-80.666599,35.045966],[-80.666406,35.045615],[-80.665998,35.045193],[-80.665526,35.044877],[-80.664989,35.044543],[-80.664496,35.044174],[-80.663852,35.043876],[-80.663037,35.043717]]}]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"point\",\"coordinates\":[-80.660805,35.049392]},{\"type\":\"polygon\",\"coordinates\":[[[-80.664582,35.044965],[-80.663874,35.04428],[-80.662586,35.04558],[-80.663444,35.046036],[-80.664582,35.044965]]]},{\"type\":\"linestring\",\"coordinates\":[[-80.662372,35.059509],[-80.662693,35.059263],[-80.662844,35.05893],[-80.66308,35.058332],[-80.663595,35.057753],[-80.663874,35.057401],[-80.66441,35.057033],[-80.664861,35.056787],[-80.665419,35.056506],[-80.665633,35.056312],[-80.666019,35.055891],[-80.666191,35.055452],[-80.666191,35.055171],[-80.666255,35.05489],[-80.666213,35.054222],[-80.666213,35.053924],[-80.665955,35.052905],[-80.665698,35.052044],[-80.665504,35.051482],[-80.665762,35.050481],[-80.66617,35.049725],[-80.666513,35.049286],[-80.666921,35.048531],[-80.667006,35.048215],[-80.667071,35.047775],[-80.667049,35.047389],[-80.666964,35.046985],[-80.666813,35.046353],[-80.666599,35.045966],[-80.666406,35.045615],[-80.665998,35.045193],[-80.665526,35.044877],[-80.664989,35.044543],[-80.664496,35.044174],[-80.663852,35.043876],[-80.663037,35.043717]]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_parseValidFeatureCollection() { String shapeJson = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[1.9496737127045984,58.41415669686543],[1.8237672363511042,58.42946998193435],[1.8422735102001124,58.471472136376455],[1.9683241046247606,58.45614207250076],[1.9496737127045984,58.41415669686543]]]}}]}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"polygon\",\"coordinates\":[[[1.9496737127045984,58.41415669686543],[1.8237672363511042,58.42946998193435],[1.8422735102001124,58.471472136376455],[1.9683241046247606,58.45614207250076],[1.9496737127045984,58.41415669686543]]]}]}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY); + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); + } + + @Test + public void should_parseValidFeatureCollection_withZCoordinate() { + String shapeJson = "{\"type\":\"FeatureCollection\",\"bbox\":null,\"features\":[{\"type\":\"Feature\",\"bbox\":null,\"geometry\":{\"type\":\"Point\",\"bbox\":null,\"coordinates\":[5.7500000010406245,59.000000000399105, 1.0]},\"properties\":{}}],\"properties\":{},\"persistableReferenceCrs\":null,\"persistableReferenceUnitZ\":\"{\\\"scaleOffset\\\":{\\\"scale\\\":1.0,\\\"offset\\\":0.0},\\\"symbol\\\":\\\"m\\\",\\\"baseMeasurement\\\":{\\\"ancestry\\\":\\\"Length\\\",\\\"type\\\":\\\"UM\\\"},\\\"type\\\":\\\"USO\\\"}\"}"; + String expectedParsedShape = "{\"type\":\"geometrycollection\",\"geometries\":[{\"type\":\"point\",\"coordinates\":[5.7500000010406245,59.000000000399105,1.0]}]}"; + + this.validateInput(this.sut::parseGeoJson, shapeJson, expectedParsedShape, Strings.EMPTY); } @Test public void should_throwException_parseUnsupportedType_feature() { String shapeJson = "{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-80.724878,35.265454],[-80.722646,35.260338],[-80.720329,35.260618],[-80.718698,35.260267],[-80.715093,35.260548],[-80.71681,35.255361],[-80.710887,35.255361],[-80.703248,35.265033],[-80.704793,35.268397],[-80.70857,35.268257],[-80.712518,35.270359],[-80.715179,35.267696],[-80.721359,35.267276],[-80.724878,35.265454]]]},\"properties\":{\"name\":\"Plaza Road Park\"}}"; - this.validateInput(this.sut::parseGeoJson, shapeJson, "must be a valid FeatureCollection"); + this.validateInput(this.sut::parseGeoJson, shapeJson, Strings.EMPTY, "must be a valid FeatureCollection"); } - private void validateInput(Function<Map<String, Object>, Map<String, Object>> parser, String shapeJson, String errorMessage) { + private void validateInput(Function<Map<String, Object>, Map<String, Object>> parser, String shapeJson, String expectedParsedShape, String errorMessage) { try { Type type = new TypeToken<Map<String, Object>>() {}.getType(); Map<String, Object> shapeObj = new Gson().fromJson(shapeJson, type); + Map<String, Object> expectedShape = new Gson().fromJson(expectedParsedShape, type); Map<String, Object> parsedShape = parser.apply(shapeObj); assertNotNull(parsedShape); assertTrue(Strings.isNullOrEmpty(errorMessage)); + assertTrue(parsedShape.equals(expectedShape)); } catch (IllegalArgumentException e) { if (Strings.isNullOrEmpty(errorMessage)) { fail(String.format("error parsing valid geo-json %s", shapeJson)); diff --git a/pom.xml b/pom.xml index ea8da0746bfa9be8cd8a962910a54555a6013bf5..f549abc9966e2bde2f0c0b1f5634119c0ff12740 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ <java.version>1.8</java.version> <springfox-version>2.7.0</springfox-version> <spring-cloud.version>Greenwich.SR2</spring-cloud.version> - <os-core-common.version>0.11.0-rc4</os-core-common.version> + <os-core-common.version>0.12.0-rc3</os-core-common.version> <snakeyaml.version>1.26</snakeyaml.version> <hibernate-validator.version>6.1.5.Final</hibernate-validator.version> <jackson.version>2.11.4</jackson.version> diff --git a/provider/indexer-azure/pom.xml b/provider/indexer-azure/pom.xml index e9434c2401aa5564cc4387b485de6b36282cb8d4..c3d7d47e1a34cb7395cebcff5ddfbf8b4f291424 100644 --- a/provider/indexer-azure/pom.xml +++ b/provider/indexer-azure/pom.xml @@ -41,7 +41,8 @@ <nimbus-jose-jwt.version>8.2</nimbus-jose-jwt.version> <indexer-core.version>0.12.0-SNAPSHOT</indexer-core.version> <spring-security-jwt.version>1.1.1.RELEASE</spring-security-jwt.version> - <osdu.corelibazure.version>0.11.0-rc5</osdu.corelibazure.version> + <osdu.corelibazure.version>0.12.0-rc10</osdu.corelibazure.version> + <osdu.oscorecommon.version>0.12.0-rc3</osdu.oscorecommon.version> <reactor-netty.version>0.9.12.RELEASE</reactor-netty.version> <java-jwt.version>3.8.1</java-jwt.version> <powermock.version>2.0.2</powermock.version> @@ -78,6 +79,11 @@ <type>pom</type> <scope>import</scope> </dependency> + <dependency> + <groupId>org.opengroup.osdu</groupId> + <artifactId>os-core-common</artifactId> + <version>${osdu.oscorecommon.version}</version> + </dependency> </dependencies> </dependencyManagement> diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/service/RetryPolicy.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/service/RetryPolicy.java index 40e0d8b2a53172610feadb9ad86b89d02be01521..85aaa1ee191e42ceaf4f3af05cec6b175595fbab 100644 --- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/service/RetryPolicy.java +++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/service/RetryPolicy.java @@ -18,6 +18,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import io.github.resilience4j.core.IntervalFunction; import io.github.resilience4j.retry.RetryConfig; import lombok.Data; import lombok.extern.java.Log; @@ -27,7 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; -import java.time.Duration; import java.util.function.Predicate; /** @@ -44,8 +44,8 @@ public class RetryPolicy { @Autowired private JaxRsDpsLog logger; - private int attempts = 3; - private int waitDuration = 1000; + private static int MAX_ATTEMPTS = 5; + private static int INITIAL_DELAY = 1000; private final String RECORD_NOT_FOUND = "notFound"; /** @@ -53,8 +53,8 @@ public class RetryPolicy { */ public RetryConfig retryConfig(Predicate<HttpResponse> predicate) { return RetryConfig.<HttpResponse>custom() - .maxAttempts(attempts) - .waitDuration(Duration.ofMillis(waitDuration)) + .maxAttempts(MAX_ATTEMPTS) + .intervalFunction(IntervalFunction.ofExponentialBackoff(INITIAL_DELAY, 2)) .retryOnResult(predicate) .build(); } diff --git a/provider/indexer-azure/src/main/resources/application.properties b/provider/indexer-azure/src/main/resources/application.properties index 0d27fa48835d20b515d0fe4a6ecd692a8d922ee6..6f65e89ecc3c8f14aa59007ff610e2bd5c7aa0b0 100644 --- a/provider/indexer-azure/src/main/resources/application.properties +++ b/provider/indexer-azure/src/main/resources/application.properties @@ -86,8 +86,11 @@ logging.ignore.servlet.paths=/swagger-ui.html # core-lib-azure configuration tenantFactoryImpl.required=true -# Disable keyVault for actuator health check +# Configuration for health checks +management.server.port=8081 management.health.azure-key-vault.enabled=false +management.health.elasticsearch.enabled=false + #Redis redis.database=${REDIS_DATABASE} \ No newline at end of file diff --git a/provider/indexer-gcp/pom.xml b/provider/indexer-gcp/pom.xml index d66e0332947f702e9b3b75dd1871e1219c64ed1e..e6b372f21d294890affaa60db70b157d935de2eb 100644 --- a/provider/indexer-gcp/pom.xml +++ b/provider/indexer-gcp/pom.xml @@ -16,64 +16,27 @@ <packaging>jar</packaging> <dependencies> - <dependency> - <groupId>org.opengroup.osdu.indexer</groupId> - <artifactId>indexer-core</artifactId> - <version>0.12.0-SNAPSHOT</version> - </dependency> - <dependency> <groupId>org.opengroup.osdu</groupId> <artifactId>core-lib-gcp</artifactId> - <version>0.10.0</version> + <version>0.12.0-rc3</version> </dependency> - <dependency> - <groupId>org.opengroup.osdu</groupId> - <artifactId>os-core-common</artifactId> - </dependency> - <dependency> - <groupId>io.grpc</groupId> - <artifactId>grpc-core</artifactId> - <version>1.38.1</version> - </dependency> - <dependency> - <groupId>com.google.cloud</groupId> - <artifactId>google-cloud-datastore</artifactId> - <version>1.72.0</version> - </dependency> - <dependency> - <groupId>com.google.cloud</groupId> - <artifactId>google-cloud-logging</artifactId> - <version>2.3.1</version> - </dependency> - <dependency> - <groupId>com.google.apis</groupId> - <artifactId>google-api-services-storage</artifactId> - <version>v1-rev150-1.25.0</version> + <groupId>org.opengroup.osdu.indexer</groupId> + <artifactId>indexer-core</artifactId> + <version>0.12.0-SNAPSHOT</version> + <!-- excluded due to runtime conflict with latest core-lib-gcp transient dependencies --> <exclusions> <exclusion> - <groupId>com.google.guava</groupId> - <artifactId>guava-jdk5</artifactId> + <groupId>com.google.api-client</groupId> + <artifactId>google-api-client</artifactId> + </exclusion> + <exclusion> + <groupId>com.google.http-client</groupId> + <artifactId>google-http-client</artifactId> </exclusion> </exclusions> </dependency> - <dependency> - <groupId>com.google.apis</groupId> - <artifactId>google-api-services-cloudkms</artifactId> - <version>v1-rev81-1.25.0</version> - </dependency> - <!-- https://mvnrepository.com/artifact/com.google.cloud/google-cloud-pubsub --> - <dependency> - <groupId>com.google.cloud</groupId> - <artifactId>google-cloud-pubsub</artifactId> - <version>1.60.0</version> - </dependency> - <dependency> - <groupId>com.google.api-client</groupId> - <artifactId>google-api-client</artifactId> - <version>1.30.11</version> - </dependency> <dependency> <groupId>org.elasticsearch</groupId> @@ -147,11 +110,6 @@ <version>1.2.0</version> <scope>test</scope> </dependency> - <dependency> - <groupId>com.google.api.grpc</groupId> - <artifactId>proto-google-iam-v1</artifactId> - <version>0.12.0</version> - </dependency> <dependency> <groupId>ch.qos.logback.contrib</groupId> <artifactId>logback-json-classic</artifactId> diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java index 720d21c7256f4bbd838431de4b9e25336587035e..206787c8d06dd825dabf1b165c9c2f52f742a735 100644 --- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java +++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java @@ -17,23 +17,30 @@ package org.opengroup.osdu.indexer.cache; +import com.google.gson.Gson; +import java.io.IOException; +import java.util.Objects; +import javax.inject.Inject; +import org.apache.http.HttpStatus; import org.opengroup.osdu.core.common.cache.RedisCache; +import org.opengroup.osdu.core.common.model.http.AppException; import org.opengroup.osdu.core.common.model.search.ClusterSettings; import org.opengroup.osdu.core.common.provider.interfaces.IElasticCredentialsCache; +import org.opengroup.osdu.core.common.provider.interfaces.IKmsClient; import org.opengroup.osdu.indexer.config.IndexerConfigurationProperties; import org.springframework.stereotype.Component; -import javax.inject.Inject; - @Component public class ElasticCredentialsCache implements IElasticCredentialsCache<String, ClusterSettings>, AutoCloseable { - private RedisCache<String, ClusterSettings> cache; + private IKmsClient kmsClient; + private RedisCache<String, String> cache; @Inject - public ElasticCredentialsCache(final IndexerConfigurationProperties properties) { - cache = new RedisCache<>(properties.getRedisSearchHost(), Integer.parseInt(properties.getRedisSearchPort()), - properties.getElasticCacheExpiration() * 60, String.class, ClusterSettings.class); + public ElasticCredentialsCache(final IndexerConfigurationProperties properties, final IKmsClient kmsClient) { + this.cache = new RedisCache<>(properties.getRedisSearchHost(), Integer.parseInt(properties.getRedisSearchPort()), + properties.getElasticCacheExpiration() * 60, String.class, String.class); + this.kmsClient = kmsClient; } @Override @@ -43,12 +50,27 @@ public class ElasticCredentialsCache implements IElasticCredentialsCache<String, @Override public void put(String s, ClusterSettings o) { - this.cache.put(s,o); + try { + String jsonSettings = new Gson().toJson(o); + String encryptString = kmsClient.encryptString(jsonSettings); + this.cache.put(s, encryptString); + } catch (IOException e) { + throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal server error", "Unable to encrypt settings before being cached", e); + } } @Override public ClusterSettings get(String s) { - return this.cache.get(s); + try { + String encryptedSettings = this.cache.get(s); + if (Objects.isNull(encryptedSettings) || encryptedSettings.isEmpty()) { + return null; + } + String jsonSettings = this.kmsClient.decryptString(encryptedSettings); + return new Gson().fromJson(jsonSettings, ClusterSettings.class); + } catch (IOException e) { + throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal server error", "Unable to decrypt settings from cache", e); + } } @Override diff --git a/provider/indexer-ibm/pom.xml b/provider/indexer-ibm/pom.xml index a270931b72639e2bcf278592904a7f726dbe5d0b..84e1fea76ba4b9dec786cc532474e437f5c2dac1 100644 --- a/provider/indexer-ibm/pom.xml +++ b/provider/indexer-ibm/pom.xml @@ -31,7 +31,7 @@ <packaging>jar</packaging> <properties> - <os-core-lib-ibm.version>0.9.0</os-core-lib-ibm.version> + <os-core-lib-ibm.version>0.12.0-SNAPSHOT</os-core-lib-ibm.version> </properties> <profiles> diff --git a/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/IndexerQueueTaskBuilderIbm.java b/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/IndexerQueueTaskBuilderIbm.java index 2b4e88c68de8b4786c4d80b491ef418dfaf0acbc..a3d7805e6aff3ca5ae2ea90a2a26254458528aff 100644 --- a/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/IndexerQueueTaskBuilderIbm.java +++ b/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/IndexerQueueTaskBuilderIbm.java @@ -4,20 +4,33 @@ package org.opengroup.osdu.indexer.ibm.util; import static org.opengroup.osdu.core.common.Constants.WORKER_RELATIVE_URL; +import static org.opengroup.osdu.core.common.model.http.DpsHeaders.AUTHORIZATION; +import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.inject.Inject; +import org.apache.http.HttpStatus; +import org.opengroup.osdu.core.common.model.http.AppException; import org.opengroup.osdu.core.common.model.http.DpsHeaders; +import org.opengroup.osdu.core.common.model.indexer.OperationType; +import org.opengroup.osdu.core.common.model.indexer.RecordInfo; +import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse; +import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest; import org.opengroup.osdu.core.common.model.search.RecordChangedMessages; import org.opengroup.osdu.core.ibm.messagebus.IMessageFactory; +import org.opengroup.osdu.indexer.config.IndexerConfigurationProperties; +import org.opengroup.osdu.indexer.service.StorageService; import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; +import com.google.common.base.Strings; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; @@ -29,6 +42,15 @@ public class IndexerQueueTaskBuilderIbm extends IndexerQueueTaskBuilder { @Inject IMessageFactory mq; + @Inject + private StorageService storageService; + + @Inject + private RequestInfoImpl requestInfo; + + @Inject + private IndexerConfigurationProperties configurationProperties; + private Gson gson; private final static String RETRY_STRING = "retry"; private final static String ERROR_CODE = "errorCode"; @@ -49,6 +71,10 @@ public class IndexerQueueTaskBuilderIbm extends IndexerQueueTaskBuilder { createTask(payload, headers); } + public void createReIndexTask(String payload, Long countdownMillis, DpsHeaders headers) { + publishAllRecordsToSubscriber(payload, headers); + } + //used by reindexer api @Override public void createWorkerTask(String payload, Long countdownMillis, DpsHeaders headers) { @@ -94,4 +120,40 @@ public class IndexerQueueTaskBuilderIbm extends IndexerQueueTaskBuilder { } } + private void publishAllRecordsToSubscriber(String payload, DpsHeaders headers) { + Gson gson = new Gson(); + RecordReindexRequest recordReindexRequest = gson.fromJson(payload, RecordReindexRequest.class); + final String recordKind = recordReindexRequest.getKind(); + RecordQueryResponse recordQueryResponse = null; + + try { + do { + headers.put(AUTHORIZATION, this.requestInfo.checkOrGetAuthorizationHeader()); + + if (recordQueryResponse != null) { + recordReindexRequest = RecordReindexRequest.builder().cursor(recordQueryResponse.getCursor()).kind(recordKind).build(); + } + recordQueryResponse = this.storageService.getRecordsByKind(recordReindexRequest); + if (recordQueryResponse.getResults() != null && recordQueryResponse.getResults().size() != 0) { + + List<RecordInfo> records = recordQueryResponse.getResults().stream() + .map(record -> RecordInfo.builder().id(record).kind(recordKind).op(OperationType.create.name()).build()).collect(Collectors.toList()); + + Map<String, String> attributes = new HashMap<>(); + attributes.put(DpsHeaders.ACCOUNT_ID, headers.getPartitionIdWithFallbackToAccountId()); + attributes.put(DpsHeaders.DATA_PARTITION_ID, headers.getPartitionIdWithFallbackToAccountId()); + attributes.put(DpsHeaders.CORRELATION_ID, headers.getCorrelationId()); + + RecordChangedMessages recordChangedMessages = RecordChangedMessages.builder().data(gson.toJson(records)).attributes(attributes).build(); + String recordChangedMessagePayload = gson.toJson(recordChangedMessages); + createTask(recordChangedMessagePayload, headers); + } + } while (!Strings.isNullOrEmpty(recordQueryResponse.getCursor()) && recordQueryResponse.getResults().size() == configurationProperties.getStorageRecordsBatchSize()); + + } catch (AppException e) { + throw e; + } catch (Exception e) { + throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Unknown error", "An unknown error has occurred.", e); + } + } } \ No newline at end of file diff --git a/provider/indexer-reference/pom.xml b/provider/indexer-reference/pom.xml index 08f403e4c3c4f53138969787b3348056f26f16c8..cc4cc2a6a684c31b2fbfc50d8671950ace3817c5 100644 --- a/provider/indexer-reference/pom.xml +++ b/provider/indexer-reference/pom.xml @@ -48,7 +48,6 @@ <dependency> <groupId>org.opengroup.osdu</groupId> <artifactId>os-core-common</artifactId> - <version>0.11.0</version> </dependency> <dependency> diff --git a/testing/indexer-test-azure/pom.xml b/testing/indexer-test-azure/pom.xml index e7f45c911a2ef5da6119561b7fa36a83dbe3d530..749427dee82b1f5f54c17504995a2080464ecb24 100644 --- a/testing/indexer-test-azure/pom.xml +++ b/testing/indexer-test-azure/pom.xml @@ -36,7 +36,7 @@ <cucumber.version>1.2.5</cucumber.version> <junit.jupiter.version>5.6.0</junit.jupiter.version> <elasticsearch.version>7.8.1</elasticsearch.version> - <os-core-common.version>0.12.0-rc1</os-core-common.version> + <os-core-common.version>0.12.0-rc3</os-core-common.version> </properties> <dependencies> @@ -70,7 +70,7 @@ <dependency> <groupId>org.opengroup.osdu</groupId> <artifactId>core-lib-azure</artifactId> - <version>0.11.0-rc4</version> + <version>0.12.0-rc10</version> <scope>test</scope> <exclusions> <exclusion> diff --git a/testing/indexer-test-gcp/src/test/resources/logback-test.xml b/testing/indexer-test-gcp/src/test/resources/logback-test.xml new file mode 100644 index 0000000000000000000000000000000000000000..22c6175d45f368b69c4006deb9ebf3ff5084579a --- /dev/null +++ b/testing/indexer-test-gcp/src/test/resources/logback-test.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <include resource="org/springframework/boot/logging/logback/defaults.xml"/> + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%yellow([%thread]) %highlight(| %-5level |) %green(%d) %cyan(| %logger{15} |) %highlight(%msg) %n</pattern> + <charset>utf8</charset> + </encoder> + </appender> + <root level="INFO"> + <appender-ref ref="CONSOLE" /> + </root> +</configuration>