[ASTERIXDB-2729][LIC] Fix license warnings in newly added AWS libraries & dependencies

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Added all missing licenses.
- Silenced all warnings being generated by the licenses.
- Updated the license check to accept <gavs> property for
  convenience of use.

Change-Id: I0ab576d748799a59d23990e2379bdf6aed74a7e5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/6284
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Hussain Towaileb <hussainht@gmail.com>
Reviewed-by: Michael Blow <mblow@apache.org>
diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml
index a542c70..2f367aa 100644
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@ -177,6 +177,30 @@
               <noticeUrl>https://raw.githubusercontent.com/reactive-streams/reactive-streams-jvm/v1.0.2/COPYING.txt</noticeUrl>
               <url>https://raw.githubusercontent.com/reactive-streams/reactive-streams-jvm/v1.0.2/LICENSE.txt</url>
             </override>
+            <override>
+              <gavs>
+                <gav>software.amazon.awssdk:sdk-core:2.10.83</gav>
+                <gav>software.amazon.awssdk:aws-core:2.10.83</gav>
+                <gav>software.amazon.awssdk:auth:2.10.83</gav>
+                <gav>software.amazon.awssdk:arns:2.10.83</gav>
+                <gav>software.amazon.awssdk:annotations:2.10.83</gav>
+                <gav>software.amazon.awssdk:utils:2.10.83</gav>
+                <gav>software.amazon.awssdk:aws-query-protocol:2.10.83</gav>
+                <gav>software.amazon.awssdk:profiles:2.10.83</gav>
+                <gav>software.amazon.awssdk:protocol-core:2.10.83</gav>
+                <gav>software.amazon.awssdk:s3:2.10.83</gav>
+                <gav>software.amazon.awssdk:netty-nio-client:2.10.83</gav>
+                <gav>software.amazon.awssdk:apache-client:2.10.83</gav>
+                <gav>software.amazon.awssdk:aws-xml-protocol:2.10.83</gav>
+                <gav>software.amazon.awssdk:regions:2.10.83</gav>
+                <gav>software.amazon.awssdk:http-client-spi:2.10.83</gav>
+              </gavs>
+              <noticeUrl>https://raw.githubusercontent.com/aws/aws-sdk-java-v2/2.10.83/NOTICE.txt</noticeUrl>
+            </override>
+            <override>
+              <gav>software.amazon.eventstream:eventstream:1.0.1</gav>
+              <noticeUrl>https://raw.githubusercontent.com/awslabs/aws-eventstream-java/7be2dd80e12f8835674c8ffb0f4a2efb64c7b585/NOTICE</noticeUrl>
+            </override>
           </overrides>
           <licenses>
             <license>
diff --git a/asterixdb/src/main/appended-resources/supplemental-models.xml b/asterixdb/src/main/appended-resources/supplemental-models.xml
index 04740f3..0bb23f0 100644
--- a/asterixdb/src/main/appended-resources/supplemental-models.xml
+++ b/asterixdb/src/main/appended-resources/supplemental-models.xml
@@ -271,4 +271,231 @@
       </properties>
     </project>
   </supplement>
+
+  <!-- AWS SDK begin -->
+  <!-- software.amazon.awssdk is ALv2, and does not contain any embedded LICENSE or NOTICE file -->
+  <!-- license override not needed, ALv2 is specified in its pom.xml -->
+  <!-- see https://github.com/aws/aws-sdk-java-v2/blob/master/LICENSE.txt -->
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>sdk-core</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>aws-core</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>s3</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>auth</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>protocol-core</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>regions</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>arns</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>netty-nio-client</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>aws-xml-protocol</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>annotations</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>apache-client</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>utils</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>http-client-spi</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>aws-query-protocol</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
+      <groupId>software.amazon.awssdk</groupId>
+      <artifactId>profiles</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.10.83</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.10.83</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>2.10.83</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+
+  <!-- software.amazon.eventstream is ALv2, and does not contain any embedded LICENSE or NOTICE file -->
+  <!-- license override not needed, ALv2 is specified in its pom.xml -->
+  <!-- see https://github.com/awslabs/aws-eventstream-java -->
+  <supplement>
+    <project>
+      <groupId>software.amazon.eventstream</groupId>
+      <artifactId>eventstream</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>1.0.1</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.0.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreNoticeOverride>1.0.1</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+  <!-- AWS SDK end -->
+
+  <!-- com.typesafe.netty is ALv2, and does not contain any embedded LICENSE or NOTICE file -->
+  <!-- license override not needed, ALv2 is specified in its pom.xml -->
+  <!-- see https://github.com/playframework/netty-reactive-streams -->
+  <supplement>
+    <project>
+      <groupId>com.typesafe.netty</groupId>
+      <artifactId>netty-reactive-streams</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.0.4</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.0.4</license.ignoreMissingEmbeddedNotice>
+      </properties>
+    </project>
+  </supplement>
+
+  <supplement>
+    <project>
+      <groupId>com.typesafe.netty</groupId>
+      <artifactId>netty-reactive-streams-http</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>2.0.4</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.0.4</license.ignoreMissingEmbeddedNotice>
+      </properties>
+    </project>
+  </supplement>
+
+  <!-- org.reactivestreams does not contain any embedded LICENSE or NOTICE file -->
+  <!-- see https://github.com/reactive-streams/reactive-streams-jvm -->
+  <supplement>
+    <project>
+      <groupId>org.reactivestreams</groupId>
+      <artifactId>reactive-streams</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>1.0.2</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.0.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.0.2</license.ignoreLicenseOverride>
+        <license.ignoreNoticeOverride>1.0.2</license.ignoreNoticeOverride>
+      </properties>
+    </project>
+  </supplement>
+
 </supplementalDataModels>
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_aws_aws-sdk-java-v2_2.10.83_NOTICE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_aws_aws-sdk-java-v2_2.10.83_NOTICE.txt
new file mode 100644
index 0000000..f3c67c6
--- /dev/null
+++ b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_aws_aws-sdk-java-v2_2.10.83_NOTICE.txt
@@ -0,0 +1,16 @@
+AWS SDK for Java 2.0
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+
+This product includes software developed by
+Amazon Technologies, Inc (http://www.amazon.com/).
+
+**********************
+THIRD PARTY COMPONENTS
+**********************
+This software includes third party software subject to the following copyrights:
+- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty.
+- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc.
+- Apache Commons Lang - https://github.com/apache/commons-lang
+- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams
+
+The licenses for these third party components are included in LICENSE.txt
\ No newline at end of file
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_awslabs_aws-eventstream-java_7be2dd80e12f8835674c8ffb0f4a2efb64c7b585_NOTICE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_awslabs_aws-eventstream-java_7be2dd80e12f8835674c8ffb0f4a2efb64c7b585_NOTICE.txt
new file mode 100644
index 0000000..6822ad6
--- /dev/null
+++ b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_awslabs_aws-eventstream-java_7be2dd80e12f8835674c8ffb0f4a2efb64c7b585_NOTICE.txt
@@ -0,0 +1,2 @@
+AWS EventStream for Java
+Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java
index e72404c..89993fd 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java
@@ -360,23 +360,31 @@
 
         gatherProjectDependencies(project, dependencyLicenseMap, dependencyGavMap);
         for (Override override : overrides) {
-            String gav = override.getGav();
-            MavenProject dep = dependencyGavMap.get(gav);
-            if (dep == null) {
-                getLog().warn("Unused override dependency " + gav + "; ignoring...");
-                continue;
+
+            // Collect both <gav></gav> and <gavs><gav></gav><gav></gav>...</gavs>
+            List<String> gavs = override.getGavs();
+            if (override.getGav() != null) {
+                gavs.add(override.getGav());
             }
-            if (override.getUrl() != null) {
-                final List<Pair<String, String>> newLicense =
-                        Collections.singletonList(new ImmutablePair<>(override.getUrl(), override.getName()));
-                List<Pair<String, String>> prevLicense = dependencyLicenseMap.put(dep, newLicense);
-                warnUnlessFlag(dep, IGNORE_LICENSE_OVERRIDE, "license list for " + toGav(dep)
-                        + " changed with <override>; was: " + prevLicense + ", now: " + newLicense);
-            }
-            if (override.getNoticeUrl() != null) {
-                noticeOverrides.put(gav, override.getNoticeUrl());
-                warnUnlessFlag(dep, IGNORE_NOTICE_OVERRIDE,
-                        "notice for " + toGav(dep) + " changed with <override>; now: " + override.getNoticeUrl());
+
+            for (String gav : gavs) {
+                MavenProject dep = dependencyGavMap.get(gav);
+                if (dep == null) {
+                    getLog().warn("Unused override dependency " + gav + "; ignoring...");
+                    continue;
+                }
+                if (override.getUrl() != null) {
+                    final List<Pair<String, String>> newLicense =
+                            Collections.singletonList(new ImmutablePair<>(override.getUrl(), override.getName()));
+                    List<Pair<String, String>> prevLicense = dependencyLicenseMap.put(dep, newLicense);
+                    warnUnlessFlag(dep, IGNORE_LICENSE_OVERRIDE, "license list for " + toGav(dep)
+                            + " changed with <override>; was: " + prevLicense + ", now: " + newLicense);
+                }
+                if (override.getNoticeUrl() != null) {
+                    noticeOverrides.put(gav, override.getNoticeUrl());
+                    warnUnlessFlag(dep, IGNORE_NOTICE_OVERRIDE,
+                            "notice for " + toGav(dep) + " changed with <override>; now: " + override.getNoticeUrl());
+                }
             }
         }
         return dependencyLicenseMap;
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/Override.java b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/Override.java
index 0391dfb..f19df51 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/Override.java
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/Override.java
@@ -18,6 +18,9 @@
  */
 package org.apache.hyracks.maven.license;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class Override {
 
     @SuppressWarnings("unused") // set by Maven plugin configuration
@@ -27,6 +30,9 @@
     private String gav;
 
     @SuppressWarnings("unused") // set by Maven plugin configuration
+    private List<String> gavs = new ArrayList<>();
+
+    @SuppressWarnings("unused") // set by Maven plugin configuration
     private String name;
 
     @SuppressWarnings("unused") // set by Maven plugin configuration
@@ -36,6 +42,10 @@
         return gav;
     }
 
+    public List<String> getGavs() {
+        return gavs;
+    }
+
     public String getUrl() {
         return url;
     }