You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mh...@apache.org on 2023/01/12 15:45:55 UTC
[asterixdb] 07/08: Merge branch 'neo'
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 <mu...@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);
+ }
+ }
+ }
+ }
}