ASTERIXDB-1320, ASTERIXDB-1323: License Fixes
ASTERIXDB-1320:
- LICENSE lists a large number of CDDL licensed bits of software
CDDL is Category B we should provide a link to the source code (see 3.1.
Availability of Source Code in (1)). Previous advice on legal-discuss
was this goes in NOTICE but recent discussions have left this a bit more muddled.
ASTERIXDB-1323:
- Missing normalize.css (MIT) ./asterix-examples/src/main/resources/admaql101-demo
/static/css/bootstrap.min.css
- Missing license for second bottle file (MIT) ./asterix-examples/src/main/
resources/tweetbook-demo/bottle.py
- Bootstrap version bundled is Apache licensed not MIT licensed ./asterix-app/src/
main/resources/webui/static/js/bootstrap.min.js
- It’s also not mentioned for all licenses what each license is (MIT/BSD etc) that
can be helpful. The version of the bundled software is also helpful.
- Should include text of RainbowVis-JS license (or better still a pointer to a copy
of the license file) [5] not a pointer to a URL on github
Also, misc cleanup.
Change-Id: Ie9fe9c18f63624896ccda420e1bf83ae0127021e
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1463
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
BAD: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ian Maxon <imaxon@apache.org>
diff --git a/asterixdb/LICENSE b/asterixdb/LICENSE
index e7b3a06..2d57e6e 100644
--- a/asterixdb/LICENSE
+++ b/asterixdb/LICENSE
@@ -268,7 +268,7 @@
and
asterix-app/src/main/resources/feed/smoothie.js
- are available under the following license:
+ are available under The MIT License:
---
Copyright (c) 2010-2013, Joe Walnes
@@ -458,7 +458,9 @@
---
Portions of the AsterixDB API examples
located at:
- asterix-examples/src/main/resources/admaql101-demo/bottle.py
+ asterix-examples/src/main/resources/admaql101-demo/bottle.py,
+ and
+ asterix-examples/src/main/resources/tweetbook-demo/bottle.py
are available under The MIT License:
---
@@ -513,5 +515,105 @@
are available under The MIT License:
---
- See https://opensource.org/licenses/mit-license.php
+ RainbowVis-JS
+ Released under MIT License
+
+ (text of The MIT License follows for convenience)
+
+ Copyright <YEAR> <COPYRIGHT HOLDER>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+ Portions of the AsterixDB API examples
+ located at:
+ asterix-examples/src/main/resources/admaql101-demo/static/js/jquery.min.js
+
+ are available under The MIT License:
+---
+ (https://github.com/jquery/jquery/blob/2.0.3/MIT-LICENSE.txt)
+ Copyright 2013 jQuery Foundation and other contributors
+ http://jquery.com/
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+ Portions of the AsterixDB API examples
+ located at:
+ asterix-examples/src/main/resources/admaql101-demo/static/js/bootstrap.min.js
+
+ are available under The Apache Software License, Version 2.0:
+---
+ bootstrap.js v3.0.0 by @fat and @mdo
+
+ Copyright 2013 Twitter Inc.
+
+ http://www.apache.org/licenses/LICENSE-2.0
+---
+ Portions of the AsterixDB API examples
+ located at:
+ asterix-examples/src/main/resources/admaql101-demo/static/css/bootstrap.min.css
+
+ are available under The Apache Software License, Version 2.0:
+---
+ Bootstrap v3.0.0
+
+ Copyright 2013 Twitter, Inc
+
+ Licensed under the Apache License v2.0
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Designed and built with all the love in the world by @mdo and @fat.
+
+ also contains normalize.css v2.1.0, under the following license:
+ (https://github.com/necolas/normalize.css/blob/v2.1.0/LICENSE.md)
+
+ Copyright (c) Nicolas Gallagher and Jonathan Neal
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---
diff --git a/asterixdb/asterix-app/pom.xml b/asterixdb/asterix-app/pom.xml
index f5cd6d9..f4667d0 100644
--- a/asterixdb/asterix-app/pom.xml
+++ b/asterixdb/asterix-app/pom.xml
@@ -352,7 +352,6 @@
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
- <version>2.2.2</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE b/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE
index 811623a..f694cb5 100644
--- a/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE
+++ b/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE
@@ -7,25 +7,164 @@
subcomponents is subject to the terms and condition of the following
licenses.
+---
+ Portions of the AsterixDB API examples
+ located at:
+ src/main/resources/admaql101-demo/bottle.py,
+ and
+ src/main/resources/tweetbook-demo/bottle.py
------------------------------------------------------------------------
- The MIT License
------------------------------------------------------------------------
+ are available under The MIT License:
+---
+ Copyright (c) 2014, Marcel Hellkamp.
- - jQuery (src/main/resources/admaql101-demo/static/js)
- - Bootstrap (src/main/resources/admaql101-demo/static/js/bootstrap.min.js),
- (src/main/resources/tweetbook-demo/static/js/bootstrap.min.js)
- - Bottle (src/main/resources/tweetbook-demo/bottle.py, src/main/resources/admaql101-demo/bottle.py)
- - geostats (src/main/resources/tweetbook-demo/static/js/geostats.js)
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
-The text of The MIT License is below for convenience. Refer to the website of each project for exact details.
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
-The MIT License (MIT)
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+---
+ Portions of the AsterixDB API examples
+ located at:
+ src/main/resources/tweetbook-demo/static/js/geostats.js
-Copyright (c) <year> <copyright holders>
+ are available under The MIT License:
+---
+ Copyright (c) 2011 Simon Georget
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ Portions of the AsterixDB API examples
+ located at:
+ src/main/resources/tweetbook-demo/static/js/rainbowvis.js
+
+ are available under The MIT License:
+---
+ RainbowVis-JS
+ Released under MIT License
+
+ (text of The MIT License follows for convenience)
+
+ Copyright <YEAR> <COPYRIGHT HOLDER>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+ Portions of the AsterixDB API examples
+ located at:
+ src/main/resources/admaql101-demo/static/js/jquery.min.js
+
+ are available under The MIT License:
+---
+ (https://github.com/jquery/jquery/blob/2.0.3/MIT-LICENSE.txt)
+ Copyright 2013 jQuery Foundation and other contributors
+ http://jquery.com/
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+ Portions of the AsterixDB API examples
+ located at:
+ src/main/resources/admaql101-demo/static/js/bootstrap.min.js
+
+ are available under The Apache Software License, Version 2.0:
+---
+ bootstrap.js v3.0.0 by @fat and @mdo
+
+ Copyright 2013 Twitter Inc.
+
+ http://www.apache.org/licenses/LICENSE-2.0
+---
+ Portions of the AsterixDB API examples
+ located at:
+ src/main/resources/admaql101-demo/static/css/bootstrap.min.css
+
+ are available under The Apache Software License, Version 2.0:
+---
+ Bootstrap v3.0.0
+
+ Copyright 2013 Twitter, Inc
+
+ Licensed under the Apache License v2.0
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Designed and built with all the love in the world by @mdo and @fat.
+
+ also contains normalize.css v2.1.0, under the following license:
+ (https://github.com/necolas/normalize.css/blob/v2.1.0/LICENSE.md)
+
+ Copyright (c) Nicolas Gallagher and Jonathan Neal
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
diff --git a/asterixdb/asterix-installer/pom.xml b/asterixdb/asterix-installer/pom.xml
index efd1106..df36c80 100644
--- a/asterixdb/asterix-installer/pom.xml
+++ b/asterixdb/asterix-installer/pom.xml
@@ -129,7 +129,7 @@
</override>
</overrides>
<templateProperties>
- <packageName>Managix Install</packageName>
+ <packageName>Apache AsterixDB Managix Install</packageName>
<asterixAppLocation>repo/asterix-app-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</asterixAppLocation>
<hyracksControlCcLocation>repo/hyracks-control-cc-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hyracksControlCcLocation>
<hivecompatLocation>repo/asterix-hivecompat-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hivecompatLocation>
@@ -459,7 +459,6 @@
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
- <version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.hyracks</groupId>
diff --git a/asterixdb/asterix-metadata/pom.xml b/asterixdb/asterix-metadata/pom.xml
index 418bfbe..c73b1a4 100644
--- a/asterixdb/asterix-metadata/pom.xml
+++ b/asterixdb/asterix-metadata/pom.xml
@@ -119,7 +119,6 @@
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
- <version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml
index bf04282..3454428 100644
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@ -94,7 +94,7 @@
</override>
<override>
<gav>com.thoughtworks.paranamer:paranamer:2.3</gav>
- <url>https://raw.githubusercontent.com/codehaus/paranamer-git/master/LICENSE.txt</url>
+ <url>https://github.com/codehaus/paranamer-git/blob/paranamer-2.3/LICENSE.txt</url>
</override>
<override>
<gav>org.codehaus.jettison:jettison:1.1</gav>
@@ -118,25 +118,32 @@
</override>
<override>
<gav>com.google.protobuf:protobuf-java:2.5.0</gav>
- <url>https://raw.githubusercontent.com/google/protobuf/master/LICENSE</url>
+ <url>https://github.com/google/protobuf/blob/v2.5.0/COPYING.txt</url>
</override>
<override>
<gav>xmlenc:xmlenc:0.52</gav>
- <url>xmlenc_0.52_LICENSE</url>
+ <url>https://cytranet.dl.sourceforge.net/project/xmlenc/xmlenc/0.52/xmlenc-0.52.tgz?xmlenc-0.52/COPYRIGHT</url>
</override>
</overrides>
<licenses>
<license>
- <url>https://raw.githubusercontent.com/google/protobuf/master/LICENSE</url>
+ <displayName>a BSD 3-clause license</displayName>
+ <url>http://asm.objectweb.org/license.html</url>
+ </license>
+ <license>
+ <displayName>a BSD 3-clause license</displayName>
+ <url>https://github.com/google/protobuf/blob/v2.5.0/COPYING.txt</url>
<contentFile>protobuf_2.5.0_LICENSE.txt</contentFile>
</license>
<license>
- <url>xmlenc_0.52_LICENSE</url>
- <contentFile>xmlenc_0.52_LICENSE.txt</contentFile>
+ <displayName>a BSD 3-clause license</displayName>
+ <url>https://github.com/codehaus/paranamer-git/blob/paranamer-2.3/LICENSE.txt</url>
+ <contentFile>paranamer-2.3_LICENSE.txt</contentFile>
</license>
<license>
- <url>https://raw.githubusercontent.com/hamcrest/JavaHamcrest/1260407ae3d2786cb54b8be52ebe041e54ccd6ac/LICENSE.txt</url>
- <contentFile>hamcrest_1.3_LICENSE.txt</contentFile>
+ <displayName>a BSD 3-clause license</displayName>
+ <url>https://cytranet.dl.sourceforge.net/project/xmlenc/xmlenc/0.52/xmlenc-0.52.tgz?xmlenc-0.52/COPYRIGHT</url>
+ <contentFile>xmlenc_0.52_LICENSE.txt</contentFile>
</license>
<license>
<displayName>The Apache Software License, Version 2.0</displayName>
@@ -151,7 +158,7 @@
<license>
<url>https://java.net/projects/stax-utils/sources/svn/content/trunk/LICENSE</url>
<contentFile>stax-utils_LICENSE.txt</contentFile>
- <displayName>a BSD-style License</displayName>
+ <displayName>a BSD 3-clause license</displayName>
<aliasUrls>
<aliasUrl>https://stax-utils.dev.java.net/source/browse/*checkout*/stax-utils/LICENSE</aliasUrl>
</aliasUrls>
@@ -207,7 +214,7 @@
</license>
</licenses>
<templateProperties>
- <packageName>Server Install</packageName>
+ <packageName>Apache AsterixDB Server Install</packageName>
<asterixAppLocation>repo/asterix-app-${project.version}.jar, within this assembly</asterixAppLocation>
<hyracksControlCcLocation>repo/hyracks-control-cc-${project.version}.jar, within this assembly</hyracksControlCcLocation>
<hivecompatLocation>repo/asterix-hivecompat-${project.version}.jar, within this assembly</hivecompatLocation>
diff --git a/asterixdb/asterix-yarn/pom.xml b/asterixdb/asterix-yarn/pom.xml
index 120f665..5491f9f 100644
--- a/asterixdb/asterix-yarn/pom.xml
+++ b/asterixdb/asterix-yarn/pom.xml
@@ -169,7 +169,7 @@
</override>
<override>
<gav>com.google.protobuf:protobuf-java:2.5.0</gav>
- <url>https://raw.githubusercontent.com/google/protobuf/master/LICENSE</url>
+ <url>https://github.com/google/protobuf/blob/v2.5.0/COPYING.txt</url>
</override>
</overrides>
<licenses>
@@ -177,13 +177,9 @@
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<aliasUrls>http://www.apache.org/licenses/LICENSE-2.0</aliasUrls>
</license>
- <license>
- <url>https://opensource.org/licenses/mit-license.php</url>
- <aliasUrls>http://www.opensource.org/li]censes/mit-license.php</aliasUrls>
- </license>
</licenses>
<templateProperties>
- <packageName>YARN Install</packageName>
+ <packageName>Apache AsterixDB YARN Install</packageName>
<asterixAppLocation>repo/asterix-app-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</asterixAppLocation>
<hyracksControlCcLocation>repo/hyracks-control-cc-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hyracksControlCcLocation>
<hivecompatLocation>repo/asterix-hivecompat-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hivecompatLocation>
@@ -431,7 +427,6 @@
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
- <version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 93e2598..ea80127 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -1058,6 +1058,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.2.12</version>
+ </dependency>
</dependencies>
</dependencyManagement>
</project>
diff --git a/asterixdb/src/main/appended-resources/supplemental-models.xml b/asterixdb/src/main/appended-resources/supplemental-models.xml
index f87a1a7..aa57859 100644
--- a/asterixdb/src/main/appended-resources/supplemental-models.xml
+++ b/asterixdb/src/main/appended-resources/supplemental-models.xml
@@ -73,7 +73,7 @@
</organization>
<licenses>
<license>
- <name>The BSD License</name>
+ <name>a BSD 3-clause license</name>
<url>http://jline.sourceforge.net/license.html</url>
</license>
</licenses>
@@ -81,6 +81,18 @@
</supplement>
<supplement>
<project>
+ <groupId>com.jcraft</groupId>
+ <artifactId>jsch</artifactId>
+ <licenses>
+ <license>
+ <name>a BSD 3-clause license</name>
+ <url>http://www.jcraft.com/jsch/LICENSE.txt</url>
+ </license>
+ </licenses>
+ </project>
+ </supplement>
+ <supplement>
+ <project>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<name>XML Pull Parsing API</name>
@@ -100,6 +112,7 @@
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<name>Java Servlet API</name>
+ <url>https://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html</url>
<organization>
<name>Oracle Corporation</name>
<url>http://www.oracle.com/</url>
@@ -114,6 +127,18 @@
</supplement>
<supplement>
<project>
+ <groupId>jdom</groupId>
+ <artifactId>jdom</artifactId>
+ <licenses>
+ <license>
+ <name>an ASL v1.1-style license</name>
+ <url>licenses/jdom.txt</url>
+ </license>
+ </licenses>
+ </project>
+ </supplement>
+ <supplement>
+ <project>
<groupId>rome</groupId>
<artifactId>rome</artifactId>
<name>ROME</name>
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_codehaus_paranamer-git_master_LICENSE.txt b/asterixdb/src/main/licenses/content/paranamer-2.3_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_codehaus_paranamer-git_master_LICENSE.txt
rename to asterixdb/src/main/licenses/content/paranamer-2.3_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt b/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt
index 2dcab42..fb69007 100644
--- a/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt
+++ b/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt
@@ -1,4 +1,5 @@
-Copyright 2014, Google Inc. All rights reserved.
+Copyright 2008, Google Inc.
+All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
@@ -29,4 +30,4 @@
Code generated by the Protocol Buffer compiler is owned by the owner
of the input file used when generating it. This code is not
standalone and requires a support library to be linked with it. This
-support library is itself covered by the above license.
+support library is itself covered by the above license.
\ No newline at end of file
diff --git a/asterixdb/src/main/licenses/templates/asterix-license.ftl b/asterixdb/src/main/licenses/templates/asterix-license.ftl
index 31c94c4..a4152ac 100644
--- a/asterixdb/src/main/licenses/templates/asterix-license.ftl
+++ b/asterixdb/src/main/licenses/templates/asterix-license.ftl
@@ -45,7 +45,7 @@
</#if>
<#list projects as p>
* ${p.name} (${p.groupId}:${p.artifactId}:${p.version})
- <#list p.locations as loc>
+ <#list p.locations as loc>
- ${loc}${p.artifactId}-${p.version}.jar
</#list>
</#list>
diff --git a/asterixdb/src/main/licenses/templates/asterix-notice.ftl b/asterixdb/src/main/licenses/templates/asterix-notice.ftl
index 6c96c88..030da26 100644
--- a/asterixdb/src/main/licenses/templates/asterix-notice.ftl
+++ b/asterixdb/src/main/licenses/templates/asterix-notice.ftl
@@ -18,7 +18,7 @@
-->
<#-- TODO(mblow): share notice file template with hyracks via maven artifact -->
<#if packageName?has_content>
-Apache AsterixDB ${packageName!}
+${packageName!}
<#else>
Apache AsterixDB
</#if>
@@ -29,11 +29,12 @@
<#list noticeMap>
AsterixDB utilizes many libraries, which come with the following applicable NOTICE(s):
-
<#items as e>
<#assign noticeText = e.getKey()/>
<#assign projects = e.getValue()/>
+
<#list projects as p>
+${p.name} (${p.groupId}:${p.artifactId}:${p.version})
<#list p.locations as loc>
- ${loc}${p.artifactId}-${p.version}.jar
</#list>
@@ -42,6 +43,5 @@
<@indent spaces=6>
${noticeText}
</@indent>
-
</#items>
</#list>
diff --git a/asterixdb/src/main/licenses/templates/source_licenses.ftl b/asterixdb/src/main/licenses/templates/source_licenses.ftl
index e13183c..191d953 100644
--- a/asterixdb/src/main/licenses/templates/source_licenses.ftl
+++ b/asterixdb/src/main/licenses/templates/source_licenses.ftl
@@ -87,7 +87,7 @@
Copyright 2012 Twitter, Inc.
http://www.apache.org/licenses/LICENSE-2.0.txt
</@license>
-<@license files=["webui/static/js/smoothie.js", "feed/smoothie.js"]>
+<@license files=["webui/static/js/smoothie.js", "feed/smoothie.js"] licenseName="The MIT License">
Copyright (c) 2010-2013, Joe Walnes
Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/asterixdb/src/main/licenses/templates/source_only_licenses.ftl b/asterixdb/src/main/licenses/templates/source_only_licenses.ftl
index 376b1bf..8bf0c56 100644
--- a/asterixdb/src/main/licenses/templates/source_only_licenses.ftl
+++ b/asterixdb/src/main/licenses/templates/source_only_licenses.ftl
@@ -40,7 +40,8 @@
</@indent>
---
</#macro>
-<@license files="asterix-examples/src/main/resources/admaql101-demo/bottle.py"
+<@license files=["asterix-examples/src/main/resources/admaql101-demo/bottle.py",
+ "asterix-examples/src/main/resources/tweetbook-demo/bottle.py"]
component="AsterixDB API examples" licenseName="The MIT License">
Copyright (c) 2014, Marcel Hellkamp.
@@ -74,7 +75,71 @@
</@license>
<@license files="asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js"
component="AsterixDB API examples" licenseName="The MIT License">
+RainbowVis-JS
+Released under MIT License
-See https://opensource.org/licenses/mit-license.php
+(text of The MIT License follows for convenience)
+Copyright <YEAR> <COPYRIGHT HOLDER>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+</@license>
+<@license files="asterix-examples/src/main/resources/admaql101-demo/static/js/jquery.min.js"
+ component="AsterixDB API examples" licenseName="The MIT License">
+(https://github.com/jquery/jquery/blob/2.0.3/MIT-LICENSE.txt)
+Copyright 2013 jQuery Foundation and other contributors
+http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+</@license>
+<@license files="asterix-examples/src/main/resources/admaql101-demo/static/js/bootstrap.min.js"
+ component="AsterixDB API examples" licenseName="The Apache Software License, Version 2.0">
+bootstrap.js v3.0.0 by @fat and @mdo
+
+Copyright 2013 Twitter Inc.
+
+http://www.apache.org/licenses/LICENSE-2.0
+</@license>
+<@license files="asterix-examples/src/main/resources/admaql101-demo/static/css/bootstrap.min.css"
+ component="AsterixDB API examples" licenseName="The Apache Software License, Version 2.0">
+Bootstrap v3.0.0
+
+Copyright 2013 Twitter, Inc
+
+Licensed under the Apache License v2.0
+http://www.apache.org/licenses/LICENSE-2.0
+
+Designed and built with all the love in the world by @mdo and @fat.
+
+also contains normalize.css v2.1.0, under the following license:
+(https://github.com/necolas/normalize.css/blob/v2.1.0/LICENSE.md)
+
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</@license>
diff --git a/hyracks-fullstack/NOTICE b/hyracks-fullstack/NOTICE
index 4888468..d44f7a0 100644
--- a/hyracks-fullstack/NOTICE
+++ b/hyracks-fullstack/NOTICE
@@ -1,4 +1,4 @@
-Apache AsterixDB Hyracks and Algebricks
+Apache Hyracks and Algebricks
Copyright 2015-2017 The Apache Software Foundation
This product includes software developed at
diff --git a/hyracks-fullstack/hyracks-fullstack-license/pom.xml b/hyracks-fullstack/hyracks-fullstack-license/pom.xml
index 201a628..7326284 100644
--- a/hyracks-fullstack/hyracks-fullstack-license/pom.xml
+++ b/hyracks-fullstack/hyracks-fullstack-license/pom.xml
@@ -59,8 +59,7 @@
<outputFile>LICENSE</outputFile>
</generatedFile>
<generatedFile>
- <!-- TODO(mblow): share the template with asterixdb as a maven artifact -->
- <template>asterix-notice.ftl</template>
+ <template>hyracks-notice.ftl</template>
<outputFile>NOTICE</outputFile>
</generatedFile>
</generatedFiles>
@@ -83,7 +82,7 @@
<templateProperties>
<hyracksControlCcLocation />
<hyracksControlCcResourcesPrefix>hyracks/hyracks-control/hyracks-control-cc/src/main/resources/</hyracksControlCcResourcesPrefix>
- <packageName>Hyracks and Algebricks</packageName>
+ <packageName>Apache Hyracks and Algebricks</packageName>
</templateProperties>
</configuration>
</plugin>
diff --git a/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl b/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/hyracks-notice.ftl
similarity index 87%
rename from hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl
rename to hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/hyracks-notice.ftl
index 6b0570c..c59e80a 100644
--- a/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl
+++ b/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/hyracks-notice.ftl
@@ -17,23 +17,20 @@
! under the License.
-->
<#-- TODO(mblow): share notice file template with asterixdb via maven artifact -->
-<#if packageName?has_content>
-Apache AsterixDB ${packageName!}
-<#else>
-Apache AsterixDB
-</#if>
+Apache Hyracks and Algebricks
Copyright 2015-2017 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
<#list noticeMap>
-AsterixDB utilizes many libraries, which come with the following applicable NOTICE(s):
+Hyracks and Algebricks utilize many libraries, which come with the following applicable NOTICE(s):
<#items as e>
<#assign noticeText = e.getKey()/>
<#assign projects = e.getValue()/>
<#list projects as p>
+${p.name} (${p.groupId}:${p.artifactId}:${p.version})
<#list p.locations as loc>
- ${loc}${p.artifactId}-${p.version}.jar
</#list>
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml
index 36c4edf..193f9e8 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml
@@ -85,6 +85,11 @@
<artifactId>maven-artifact</artifactId>
<version>3.0</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-compat</artifactId>
+ <version>3.3.9</version>
+ </dependency>
</dependencies>
</project>
\ 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/GenerateFileMojo.java b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java
index fa5429a..b604f18 100644
--- 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
@@ -22,8 +22,11 @@
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
+import java.lang.Override;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.HashMap;
@@ -31,6 +34,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Random;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
@@ -49,17 +53,31 @@
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.hyracks.maven.license.freemarker.IndentDirective;
import org.apache.hyracks.maven.license.freemarker.LoadFileDirective;
import org.apache.hyracks.maven.license.project.LicensedProjects;
import org.apache.hyracks.maven.license.project.Project;
-import org.apache.commons.io.IOUtils;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.Authentication;
+import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.repository.Proxy;
@Mojo(name = "generate",
requiresProject = true,
@@ -109,15 +127,68 @@
resolveNoticeFiles();
resolveLicenseFiles();
rebuildLicenseContentProjectMap();
- buildNoticeProjectMap();
- persistLicenseMap();
combineCommonGavs();
+ collectSourceAssemblies();
+ persistLicenseMap();
+ buildNoticeProjectMap();
generateFiles();
} catch (IOException | TemplateException | ProjectBuildingException e) {
throw new MojoExecutionException("Unexpected exception: " + e, e);
}
}
+ private void collectSourceAssemblies() throws ProjectBuildingException, IOException {
+ try (StubArtifactRepository stubRepo = new StubArtifactRepository()) {
+ DefaultRepositoryRequest rr = new DefaultRepositoryRequest();
+ rr.setLocalRepository(stubRepo);
+ ArtifactRepository central = getCentralRepository();
+ rr.setRemoteRepositories(Collections.singletonList(central));
+ ArtifactResolutionRequest request = new ArtifactResolutionRequest(rr);
+ for (LicensedProjects lp : licenseMap.values()) {
+ if (lp.getLicense().getDisplayName() != null
+ && lp.getLicense().getDisplayName().toLowerCase().contains("cddl")) {
+ ensureCDDLSourcesPointer(lp.getProjects(), central, request);
+ }
+ }
+ }
+ }
+
+ private void ensureCDDLSourcesPointer(Collection<Project> projects, ArtifactRepository central,
+ ArtifactResolutionRequest request) throws ProjectBuildingException {
+ for (Project p : projects) {
+ if (p.getSourcePointer() != null) {
+ continue;
+ }
+ getLog().debug("finding sources for artifact: " + p);
+ Artifact sourcesArtifact = new DefaultArtifact(p.getGroupId(), p.getArtifactId(),
+ p.getVersion(), Artifact.SCOPE_COMPILE, "jar", "sources", null);
+ MavenProject mavenProject = resolveDependency(sourcesArtifact);
+ sourcesArtifact.setArtifactHandler(mavenProject.getArtifact().getArtifactHandler());
+
+ request.setArtifact(sourcesArtifact);
+ ArtifactResolutionResult result = artifactResolver.resolve(request);
+ getLog().debug("result: " + result);
+ StringBuilder noticeBuilder = new StringBuilder("You may obtain ");
+ noticeBuilder.append(p.getName()).append(" in Source Code form code here:\n");
+ if (result.isSuccess()) {
+ noticeBuilder.append(central.getUrl()).append("/").append(central.pathOf(sourcesArtifact));
+ } else {
+ getLog().warn("Unable to find sources in 'central' for " + p + ", falling back to project url: "
+ + p.getUrl());
+ noticeBuilder.append(p.getUrl() != null ? p.getUrl() : "MISSING SOURCE POINTER");
+ }
+ p.setSourcePointer(noticeBuilder.toString());
+ }
+ }
+
+ private ArtifactRepository getCentralRepository() {
+ for (ArtifactRepository repo : session.getRequest().getRemoteRepositories()) {
+ if ("central".equals(repo.getId())) {
+ return repo;
+ }
+ }
+ throw new IllegalStateException("Unable to find 'central' remote repository!");
+ }
private void resolveLicenseContent() throws IOException {
Set<LicenseSpec> licenseSpecs = new HashSet<>();
@@ -220,9 +291,9 @@
spec.setDisplayName(projects.getLicense().getDisplayName());
}
}
- for (Project project : projects.getProjects()) {
- project.setLocation(extraLicenseFile.getLocation());
- addProject(project, projects.getLicense(), extraLicenseFile.isAdditive());
+ for (Project p : projects.getProjects()) {
+ p.setLocation(extraLicenseFile.getLocation());
+ addProject(p, projects.getLicense(), extraLicenseFile.isAdditive());
}
}
}
@@ -244,10 +315,10 @@
int counter = 0;
Map<String, LicensedProjects> licenseMap2 = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR);
for (LicensedProjects lps : licenseMap.values()) {
- for (Project project : lps.getProjects()) {
- String licenseText = project.getLicenseText();
+ for (Project p : lps.getProjects()) {
+ String licenseText = p.getLicenseText();
if (licenseText == null) {
- getLog().warn("Using license other than from within artifact: " + project.gav());
+ getLog().warn("Using license other than from within artifact: " + p.gav());
licenseText = resolveLicenseContent(lps.getLicense(), false);
}
LicenseSpec spec = lps.getLicense();
@@ -268,7 +339,7 @@
if (lp2.getLicense().getDisplayName() == null) {
lp2.getLicense().setDisplayName(lps.getLicense().getDisplayName());
}
- lp2.addProject(project);
+ lp2.addProject(p);
}
}
licenseMap = licenseMap2;
@@ -282,15 +353,26 @@
private void buildNoticeProjectMap() {
noticeMap = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR);
- for (Project project : getProjects()) {
- final String noticeText = project.getNoticeText();
+ for (Project p : getProjects()) {
+ prependSourcePointerToNotice(p);
+ final String noticeText = p.getNoticeText();
if (noticeText == null) {
continue;
}
if (!noticeMap.containsKey(noticeText)) {
noticeMap.put(noticeText, new TreeSet<>(Project.PROJECT_COMPARATOR));
}
- noticeMap.get(noticeText).add(project);
+ noticeMap.get(noticeText).add(p);
+ }
+ }
+
+ private void prependSourcePointerToNotice(Project project) {
+ if (project.getSourcePointer() != null) {
+ String notice = project.getSourcePointer().replace("\n", "\n ");
+ if (project.getNoticeText() != null) {
+ notice += "\n\n" + project.getNoticeText();
+ }
+ project.setNoticeText(notice);
}
}
@@ -308,8 +390,8 @@
private void resolveArtifactFiles(final String name, Predicate<JarEntry> filter,
BiConsumer<Project, String> consumer, UnaryOperator<String> contentTransformer)
throws MojoExecutionException, IOException {
- for (Project project : getProjects()) {
- File artifactFile = new File(project.getArtifactPath());
+ for (Project p : getProjects()) {
+ File artifactFile = new File(p.getArtifactPath());
if (!artifactFile.exists()) {
throw new MojoExecutionException("Artifact file " + artifactFile + " does not exist!");
} else if (!artifactFile.getName().endsWith(".jar")) {
@@ -320,15 +402,15 @@
SortedMap<String, JarEntry> matches = gatherMatchingEntries(jarFile,
filter);
if (matches.isEmpty()) {
- getLog().warn("No " + name + " file found for " + project.gav());
+ getLog().warn("No " + name + " file found for " + p.gav());
} else {
if (matches.size() > 1) {
- getLog().warn("Multiple " + name + " files found for " + project.gav() + ": " + matches.keySet()
+ getLog().warn("Multiple " + name + " files found for " + p.gav() + ": " + matches.keySet()
+ "; taking first");
} else {
- getLog().info(project.gav() + " has " + name + " file: " + matches.keySet());
+ getLog().info(p.gav() + " has " + name + " file: " + matches.keySet());
}
- resolveContent(project, jarFile, matches.values().iterator().next(),
+ resolveContent(p, jarFile, matches.values().iterator().next(),
contentTransformer, consumer, name);
}
}
@@ -359,5 +441,154 @@
}
return matches;
}
+
+ private static class StubArtifactRepository implements ArtifactRepository, AutoCloseable {
+ private static final Random random = new Random();
+ private final File tempDir;
+ private final ArtifactRepositoryLayout layout;
+
+ public StubArtifactRepository() {
+ String tmpDir = System.getProperty("java.io.tmpdir", "/tmp");
+ this.tempDir = new File(tmpDir, "repo" + random.nextInt());
+ this.layout = new DefaultRepositoryLayout();
+ }
+
+ @Override
+ public ArtifactRepositoryLayout getLayout() {
+ return layout;
+ }
+
+ @Override
+ public String pathOf(Artifact artifact) {
+ return this.layout.pathOf(artifact);
+ }
+
+ @Override
+ public String getBasedir() {
+ return tempDir.toString();
+ }
+
+ @Override
+ public void close() throws IOException {
+ FileUtils.deleteDirectory(tempDir);
+
+ }
+
+ @Override
+ public String pathOfRemoteRepositoryMetadata(ArtifactMetadata artifactMetadata) {
+ return null;
+ }
+
+ @Override
+ public String pathOfLocalRepositoryMetadata(ArtifactMetadata artifactMetadata,
+ ArtifactRepository artifactRepository) {
+ return null;
+ }
+
+ @Override
+ public String getUrl() {
+ return null;
+ }
+
+ @Override
+ public void setUrl(String s) {
+ // unused
+ }
+
+ @Override
+ public String getProtocol() {
+ return null;
+ }
+
+ @Override
+ public String getId() {
+ return "stub";
+ }
+
+ @Override
+ public void setId(String s) {
+ // unused
+ }
+
+ @Override
+ public ArtifactRepositoryPolicy getSnapshots() {
+ return null;
+ }
+
+ @Override
+ public void setSnapshotUpdatePolicy(ArtifactRepositoryPolicy artifactRepositoryPolicy) {
+ // unused
+ }
+
+ @Override
+ public ArtifactRepositoryPolicy getReleases() {
+ return null;
+ }
+
+ @Override
+ public void setReleaseUpdatePolicy(ArtifactRepositoryPolicy artifactRepositoryPolicy) {
+ // unused
+ }
+
+ @Override
+ public void setLayout(ArtifactRepositoryLayout artifactRepositoryLayout) {
+ // unused
+ }
+
+ @Override
+ public String getKey() {
+ return null;
+ }
+
+ @Override
+ public boolean isUniqueVersion() {
+ return false;
+ }
+
+ @Override
+ public boolean isBlacklisted() {
+ return false;
+ }
+
+ @Override
+ public void setBlacklisted(boolean b) {
+ // unused
+ }
+
+ @Override
+ public Artifact find(Artifact artifact) {
+ return null;
+ }
+
+ @Override
+ public List<String> findVersions(Artifact artifact) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean isProjectAware() {
+ return false;
+ }
+
+ @Override
+ public void setAuthentication(Authentication authentication) {
+ // unused
+ }
+
+ @Override
+ public Authentication getAuthentication() {
+ return null;
+ }
+
+ @Override
+ public void setProxy(Proxy proxy) {
+ // unused
+ }
+
+ @Override
+ public Proxy getProxy() {
+ return null;
+ }
+ }
}
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 4363170..929b7d7 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
@@ -40,6 +40,7 @@
import org.apache.hyracks.maven.license.project.Project;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.License;
import org.apache.maven.model.Model;
import org.apache.maven.plugin.AbstractMojo;
@@ -86,6 +87,12 @@
@Component
private ModelInheritanceAssembler assembler;
+ @Parameter( defaultValue = "${session}", required = true, readonly = true )
+ protected MavenSession session;
+
+ @Component
+ protected org.apache.maven.artifact.resolver.ArtifactResolver artifactResolver;
+
@Parameter ( required = true )
private String location;
@@ -192,6 +199,9 @@
urlToLicenseMap.put(alias ,license);
}
}
+ } else if (license.getDisplayName() == null && spec.getDisplayName() != null) {
+ getLog().info("Propagating license name from " + project.gav() + ": " + spec.getDisplayName());
+ license.setDisplayName(spec.getDisplayName());
}
licenseUrl = license.getUrl();
LicensedProjects entry = licenseMap.get(licenseUrl);
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java
index e5e57ad..80d4548 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java
@@ -19,7 +19,9 @@
package org.apache.hyracks.maven.license.project;
import java.io.File;
+import java.util.Arrays;
import java.util.Comparator;
+import java.util.List;
import org.apache.maven.project.MavenProject;
@@ -37,6 +39,7 @@
private String artifactPath;
private String noticeText;
private String licenseText;
+ private String sourcePointer;
@JsonIgnore
private MavenProject mavenProject;
@@ -105,8 +108,9 @@
}
@JsonIgnore
- public String [] getLocations() {
- return getLocation().split(",");
+ public List<String> getLocations() {
+ // TODO(mblow): store locations as an set instead of string
+ return Arrays.asList(getLocation().split(","));
}
public void setArtifactId(String artifactId) {
@@ -156,4 +160,17 @@
public void setLicenseText(String licenseText) {
this.licenseText = licenseText;
}
+
+ public String getSourcePointer() {
+ return sourcePointer;
+ }
+
+ public void setSourcePointer(String sourcePointer) {
+ this.sourcePointer = sourcePointer;
+ }
+
+ @Override
+ public String toString() {
+ return "Project [" + gav() + "]";
+ }
}