This is an automated email from the ASF dual-hosted git repository.

mhubail pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit ab2fbf432a4a59b6171fb0d5e02cd59746d082fd
Merge: 9f04aefb57 2538c159d3
Author: Murtadha Hubail <murtadha.hub...@couchbase.com>
AuthorDate: Tue Jan 10 21:09:06 2023 +0300

    Merge branch 'neo'
    
    Change-Id: I1334d543bc86fffa849dd38e60fdf98c706444ac

 .../optimizer/rules/LoadRecordFieldsRule.java      |  14 +--
 .../queries_sqlpp/objects/ObjectsQueries.xml       |   5 +
 .../load-record-fields.1.ddl.sqlpp                 |  30 +++++
 .../load-record-fields.2.update.sqlpp              |  25 +++++
 .../load-record-fields.3.query.sqlpp               |  30 +++++
 .../load-record-fields.4.query.sqlpp               |  30 +++++
 .../load-record-fields/load-record-fields.3.adm    |   2 +
 .../load-record-fields/load-record-fields.4.plan   |  26 +++++
 .../asterix/lang/common/util/FunctionUtil.java     |  13 +++
 .../main/licenses/templates/asterix-license.ftl    |   5 +-
 .../src/main/licenses/templates/asterix-notice.ftl |   3 +
 .../src/main/licenses/templates/hyracks-notice.ftl |   3 +
 .../hyracks/control/cc/work/NodeHeartbeatWork.java |   5 +
 .../maven/license/DownloadLicensesMojo.java        |   2 +-
 .../hyracks/maven/license/GenerateFileMojo.java    | 124 ++++++++++++++++++---
 .../apache/hyracks/maven/license/LicenseMojo.java  |  47 +++++---
 .../maven/license/project/LicensedProjects.java    |   6 +
 .../hyracks/maven/license/project/Project.java     |  12 +-
 18 files changed, 344 insertions(+), 38 deletions(-)

diff --cc 
hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java
index 347c19ad3c,8edc1b212f..2c7a23b0f5
--- 
a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java
@@@ -110,6 -118,9 +118,11 @@@ public class GenerateFileMojo extends L
      @Parameter
      private boolean stripFoundationAssertionFromNotices = false;
  
++    @Parameter
++    private boolean includeShadowedDependencies = true;
+     @Parameter
+     private boolean validateShadowLicenses = false;
+ 
      private SortedMap<String, SortedSet<Project>> noticeMap;
  
      @java.lang.Override
@@@ -472,4 -496,71 +498,76 @@@
          }
          return matches;
      }
+ 
+     private UnaryOperator<String> getNoticeFileContentTransformer() {
+         UnaryOperator<String> transformer;
+         if (stripFoundationAssertionFromNotices) {
+             transformer = text -> 
FOUNDATION_PATTERN.matcher(text).replaceAll("");
+         } else {
+             transformer = UnaryOperator.identity();
+         }
+         return transformer;
+     }
+ 
+     @java.lang.Override
+     protected void gatherProjectDependencies(MavenProject project,
+             Map<MavenProject, List<Pair<String, String>>> 
dependencyLicenseMap,
+             Map<String, MavenProject> dependencyGavMap) throws 
ProjectBuildingException, MojoExecutionException {
+         super.gatherProjectDependencies(project, dependencyLicenseMap, 
dependencyGavMap);
+         gatherShadowedDependencies(dependencyLicenseMap, dependencyGavMap);
+     }
+ 
+     @java.lang.Override
+     protected void processExtraDependencies(Map<MavenProject, 
List<Pair<String, String>>> dependencyLicenseMap,
+             Map<String, MavenProject> dependencyGavMap) throws 
ProjectBuildingException, MojoExecutionException {
+         super.processExtraDependencies(dependencyLicenseMap, 
dependencyGavMap);
+         gatherShadowedDependencies(dependencyLicenseMap, dependencyGavMap);
+     }
+ 
+     private void gatherShadowedDependencies(Map<MavenProject, 
List<Pair<String, String>>> dependencyLicenseMap,
+             Map<String, MavenProject> dependencyGavMap) throws 
MojoExecutionException, ProjectBuildingException {
+         Set<MavenProject> projects = new 
TreeSet<>(Comparator.comparing(MavenProject::getId));
++        if (!includeShadowedDependencies) {
++            getLog().info("Not gathering shadowed dependencies as 
'includeShadowedDependencies' is set to "
++                    + includeShadowedDependencies);
++            return;
++        }
+         projects.addAll(dependencyLicenseMap.keySet());
+         for (MavenProject p : projects) {
+             boolean finished = false;
+             File artifactFile = p.getArtifact().getFile();
+             if (!artifactFile.exists()) {
+                 throw new MojoExecutionException("Artifact file " + 
artifactFile + " does not exist!");
+             } else if (!artifactFile.getName().endsWith(".jar")) {
+                 getLog().info("Skipping unknown artifact file type: " + 
artifactFile);
+                 finished = true;
+             }
+             if (!finished) {
+                 try (JarFile jarFile = new JarFile(artifactFile)) {
+                     SortedMap<String, JarEntry> matches = 
gatherMatchingEntries(jarFile,
+                             entry -> entry.getName().matches("(.*/|^)" + 
"pom\\.properties"));
+                     if (!matches.isEmpty()) {
+                         for (JarEntry entry : matches.values()) {
+                             Properties props = new Properties();
+                             props.load(jarFile.getInputStream(entry));
+                             String groupId = props.getProperty("groupId");
+                             String artifactId = 
props.getProperty("artifactId");
+                             String version = props.getProperty("version");
+                             String gav = groupId + ":" + artifactId + ":" + 
version;
+                             if (!dependencyGavMap.containsKey(gav)) {
+                                 getLog().info("adding " + gav + " (shadowed 
from " + p.getId() + ")");
+                                 ArtifactHandler handler = new 
DefaultArtifactHandler("jar");
+                                 String[] gavParts = StringUtils.split(gav, 
':');
+                                 Artifact manualDep = new 
DefaultArtifact(gavParts[0], gavParts[1], gavParts[2],
+                                         Artifact.SCOPE_COMPILE, "jar", null, 
handler);
+                                 processArtifact(manualDep, 
dependencyLicenseMap, dependencyGavMap, true);
+                             }
+                         }
+                     }
+                 } catch (IOException e) {
+                     throw new MojoExecutionException(e);
+                 }
+             }
+         }
+     }
  }

Reply via email to