Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id A7CA8200C0B for ; Sun, 15 Jan 2017 02:33:36 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id A68A1160B51; Sun, 15 Jan 2017 01:33:36 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 5EE95160B55 for ; Sun, 15 Jan 2017 02:33:34 +0100 (CET) Received: (qmail 93707 invoked by uid 500); 15 Jan 2017 01:33:33 -0000 Mailing-List: contact commits-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list commits@asterixdb.apache.org Received: (qmail 93607 invoked by uid 99); 15 Jan 2017 01:33:33 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 15 Jan 2017 01:33:33 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 3B027DFDD1; Sun, 15 Jan 2017 01:33:33 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: mblow@apache.org To: commits@asterixdb.apache.org Date: Sun, 15 Jan 2017 01:33:37 -0000 Message-Id: <4153255b4e4946c091fff4ab460532ab@git.apache.org> In-Reply-To: <1ec3f599bfe34bae81cccce40a7a79f4@git.apache.org> References: <1ec3f599bfe34bae81cccce40a7a79f4@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [5/5] asterixdb git commit: AsterixDB & Hyracks Source Assemblies, Licensing archived-at: Sun, 15 Jan 2017 01:33:36 -0000 AsterixDB & Hyracks Source Assemblies, Licensing - ASTERIXDB-1319: AsterixDB source release LICENSE issues - Generate Asterix & Hyracks source assemblies as part of the build - Generate LICENSE & NOTICE file for above assemblies into source tree. - Move license automation plugin to Hyracks Change-Id: I8bd8694ad85f25f9b61182ec18fdc39f74480685 Reviewed-on: https://asterix-gerrit.ics.uci.edu/1439 Tested-by: Jenkins BAD: Jenkins Integration-Tests: Jenkins Reviewed-by: Ian Maxon Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/43b40b68 Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/43b40b68 Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/43b40b68 Branch: refs/heads/master Commit: 43b40b68a8ac8af90586802d6f9bf49d7b4be050 Parents: 5226ca8 Author: Michael Blow Authored: Sat Jan 14 17:03:12 2017 -0500 Committer: Michael Blow Committed: Sat Jan 14 17:32:57 2017 -0800 ---------------------------------------------------------------------- asterixdb/LICENSE | 429 ++++++----- asterixdb/NOTICE | 2 +- .../tweetbook-demo/static/js/rainbowvis.js | 35 +- asterixdb/asterix-installer/pom.xml | 9 +- asterixdb/asterix-license/pom.xml | 122 ++++ .../license-automation-plugin/pom.xml | 91 --- .../apache/asterix/license/DependencySet.java | 45 -- .../asterix/license/DownloadLicensesMojo.java | 89 --- .../asterix/license/ExtraLicenseFile.java | 51 -- .../asterix/license/GenerateFileMojo.java | 339 --------- .../apache/asterix/license/GeneratedFile.java | 36 - .../org/apache/asterix/license/LicenseMojo.java | 321 --------- .../org/apache/asterix/license/LicenseSpec.java | 115 --- .../org/apache/asterix/license/LicenseUtil.java | 123 ---- .../org/apache/asterix/license/Override.java | 43 -- .../license/SupplementalModelHelper.java | 134 ---- .../license/freemarker/IndentDirective.java | 115 --- .../license/freemarker/LoadFileDirective.java | 115 --- .../license/project/LicensedProjects.java | 57 -- .../apache/asterix/license/project/Project.java | 159 ----- asterixdb/asterix-maven-plugins/pom.xml | 1 - asterixdb/asterix-server/pom.xml | 9 +- asterixdb/asterix-yarn/pom.xml | 9 +- asterixdb/pom.xml | 4 +- .../main/licenses/templates/asterix-license.ftl | 12 +- .../main/licenses/templates/asterix-notice.ftl | 40 -- .../templates/asterix-source-license.ftl | 33 + .../main/licenses/templates/source_licenses.ftl | 252 +++++-- .../licenses/templates/source_only_licenses.ftl | 80 +++ hyracks-fullstack/LICENSE | 708 ++++++++++--------- hyracks-fullstack/NOTICE | 2 +- .../algebricks/algebricks-compiler/pom.xml | 1 - .../algebricks/algebricks-core/pom.xml | 1 - .../algebricks-examples/piglet-example/pom.xml | 1 - .../algebricks/algebricks-rewriter/pom.xml | 1 - .../hyracks-fullstack-license/pom.xml | 119 ++++ .../www.apache.org_licenses_LICENSE-2.0.txt | 202 ++++++ .../main/licenses/templates/asterix-notice.ftl | 46 ++ .../templates/hyracks-source-license.ftl | 33 + .../main/licenses/templates/source_licenses.ftl | 186 +++++ .../licenses/templates/source_only_licenses.ftl | 392 ++++++++++ hyracks-fullstack/hyracks/hyracks-api/pom.xml | 1 - .../hyracks-control/hyracks-control-cc/pom.xml | 1 - .../hyracks-control/hyracks-control-nc/pom.xml | 1 - .../hyracks-control/hyracks-nc-service/pom.xml | 3 +- .../hyracks-data/hyracks-data-std/pom.xml | 1 - .../hyracks/hyracks-dataflow-std/pom.xml | 5 - .../license-automation-plugin/pom.xml | 90 +++ .../hyracks/maven/license/DependencySet.java | 45 ++ .../maven/license/DownloadLicensesMojo.java | 89 +++ .../hyracks/maven/license/ExtraLicenseFile.java | 51 ++ .../hyracks/maven/license/GenerateFileMojo.java | 344 +++++++++ .../hyracks/maven/license/GeneratedFile.java | 36 + .../hyracks/maven/license/LicenseMojo.java | 322 +++++++++ .../hyracks/maven/license/LicenseSpec.java | 115 +++ .../hyracks/maven/license/LicenseUtil.java | 141 ++++ .../apache/hyracks/maven/license/Override.java | 43 ++ .../maven/license/SupplementalModelHelper.java | 134 ++++ .../license/freemarker/IndentDirective.java | 151 ++++ .../license/freemarker/LoadFileDirective.java | 115 +++ .../maven/license/project/LicensedProjects.java | 57 ++ .../hyracks/maven/license/project/Project.java | 159 +++++ .../hyracks/hyracks-maven-plugins/pom.xml | 3 +- .../hyracks/hyracks-server/pom.xml | 1 - hyracks-fullstack/pom.xml | 7 +- .../main/licenses/templates/source_licenses.ftl | 197 ------ 66 files changed, 3920 insertions(+), 2754 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/LICENSE ---------------------------------------------------------------------- diff --git a/asterixdb/LICENSE b/asterixdb/LICENSE index 427fa0a..62d1c3e 100644 --- a/asterixdb/LICENSE +++ b/asterixdb/LICENSE @@ -1,4 +1,3 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -200,20 +199,20 @@ 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. - - -ASTERIXDB COMPONENTS: - -AsterixDB includes a number of subcomponents with separate copyright -notices and license terms. Your use of the source code for these -subcomponents is subject to the terms and condition of the following -licenses. - -For portions of the AsterixDB WebUI at: -asterix-app/src/main/resources/webui/static/js/jquery.min.js -and -asterix-app/src/main/resources/webui/static/js/jquery.autosize-min.js - +=== + AsterixDB includes source code with separate copyright notices and + license terms. Your use of this source code is subject to the terms + and condition of the following licenses. +=== + Portions of the AsterixDB WebUI + located at: + asterix-app/src/main/resources/webui/static/js/jquery.min.js, + asterix-app/src/main/resources/webui/static/js/jquery.autosize-min.js, + and + asterix-app/src/main/resources/queryui/js/jquery-1.12.4.min.js + + are available under an MIT-style license: +--- Copyright jQuery Foundation and other contributors, https://jquery.org/ This software consists of voluntary contributions made by many @@ -250,13 +249,28 @@ asterix-app/src/main/resources/webui/static/js/jquery.autosize-min.js externally maintained libraries used by this software which have their own licenses; we recommend you read them, as their terms may differ from the terms above. - -as well as portions of the WebUI at: -asterix-app/src/main/resources/webui/static/js/bootstrap.min.js - - The MIT License (MIT) - - Copyright (c) 2011-2015 Twitter, Inc +--- + Portions of the AsterixDB WebUI + located at: + asterix-app/src/main/resources/webui/static/js/bootstrap.min.js, + asterix-app/src/main/resources/webui/static/css/bootstrap-responsive.min.css, + and + asterix-app/src/main/resources/webui/static/css/bootstrap.min.css + + are available under the following license: +--- + Copyright 2012 Twitter, Inc. + http://www.apache.org/licenses/LICENSE-2.0.txt +--- + Portions of the AsterixDB WebUI + located at: + asterix-app/src/main/resources/webui/static/js/smoothie.js, + and + asterix-app/src/main/resources/feed/smoothie.js + + are available under the following license: +--- + Copyright (c) 2010-2013, Joe Walnes Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -275,234 +289,197 @@ asterix-app/src/main/resources/webui/static/js/bootstrap.min.js 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 QueryUI + located at: + asterix-app/src/main/resources/queryui/js/json-formatter.min.js, + and + asterix-app/src/main/resources/queryui/css/json-formatter.min.css + are available under the following license: +--- + Copyright 2014 Mohsen Azimi -and portions of the WebUI at: -asterix-app/src/main/resources/webui/static/js/smoothie.js -and -asterix-app/src/main/resources/feed/smoothie.js - - MIT License - ----------- - - Copyright (c) 2010-2013, Joe Walnes - 2013-2014, Drew Noakes - - 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. - -For portions of the Asterix API examples at: -asterix-examples/src/main/resources/admaql101-demo/bottle.py - - Copyright (c) 2014, Marcel Hellkamp. - - 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. - -and at asterix-examples/src/main/resources/tweetbook-demo/static/js/geostats.js: - -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: + 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 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + http://www.apache.org/licenses/LICENSE-2.0 -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. + 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. +--- + Portions of the AsterixDB QueryUI + located at: + asterix-app/src/main/resources/queryui/js/bootstrap.min.js, + asterix-app/src/main/resources/queryui/css/bootstrap.min.css, + and + asterix-app/src/main/resources/queryui/css/bootstrap-theme.min.css + + are available under the following license: +--- + The MIT License (MIT) -as well as at asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js: + Copyright (c) 2011-2015 Twitter, Inc -RainbowVis-JS -Released under MIT License + 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: -Source: https://github.com/anomal/RainbowVis-JS + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -For portions of the AsterixDB QueryUI at: -asterix-app/src/main/resources/queryui/js/jquery-1.12.4.min.js + 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 QueryUI + located at: + asterix-app/src/main/resources/queryui/js/angular.min.js - Copyright jQuery Foundation and other contributors, https://jquery.org/ + are available under The MIT License: +--- + Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - This software consists of voluntary contributions made by many - individuals. For exact contribution history, see the revision history - available at https://github.com/jquery/jquery + 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 following license applies to all parts of this software except as - documented below: + 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 QueryUI + located at: + asterix-app/src/main/resources/queryui/js/codemirror.js, + asterix-app/src/main/resources/queryui/js/javascript.js, + and + asterix-app/src/main/resources/queryui/css/codemirror.css + + are available under The MIT License: +--- + Copyright (C) 2016 by Marijn Haverbeke and others - 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 QueryUI + located at: + asterix-app/src/main/resources/queryui/js/ui-codemirror.js - ==== + are available under The MIT License: +--- + Copyright (c) 2012 the AngularUI Team, http://angular-ui.github.com - All files located in the node_modules and external directories are - externally maintained libraries used by this software which have their - own licenses; we recommend you read them, as their terms may differ from - the terms above. - -For more portions of the AsterixDB QueryUI at: -asterix-app/src/main/resources/queryui/js/bootstrap.min.js -asterix-app/src/main/resources/queryui/css/bootstrap.min.css -asterix-app/src/main/resources/queryui/css/bootstrap-theme.min.css - - The MIT License (MIT) + 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: - Copyright (c) 2011-2016 Twitter, Inc. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - 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 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/bottle.py - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. + are available under The MIT License: +--- + Copyright (c) 2014, Marcel Hellkamp. - 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. + 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: -For more portions of the AsterixDB QueryUI at: -asterix-app/src/main/resources/queryui/js/angular.min.js + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - The MIT License + 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/tweetbook-demo/static/js/geostats.js - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org + 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. - -For more portions of the AsterixDB QueryUI at: -asterix-app/src/main/resources/queryui/js/codemirror.js -asterix-app/src/main/resources/queryui/js/javascript.js -asterix-app/src/main/resources/queryui/css/codemirror.css - - Copyright (C) 2016 by Marijn Haverbeke and others - - 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. - Status API Training Shop Blog About - -For more portions of the AsterixDB QueryUI at: -asterix-app/src/main/resources/queryui/js/ui-codemirror.js - - The MIT License - - Copyright (c) 2012 the AngularUI Team, http://angular-ui.github.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. - -For more portions of the AsterixDB QueryUI at: -asterix-app/src/main/resources/queryui/js/json-formatter.min.js -asterix-app/src/main/resources/queryui/css/json-formatter.min.css - - Copyright 2014 Mohsen Azimi - - 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. + 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/tweetbook-demo/static/js/rainbowvis.js + + are available under The MIT License: +--- + See https://opensource.org/licenses/mit-license.php +--- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/NOTICE ---------------------------------------------------------------------- diff --git a/asterixdb/NOTICE b/asterixdb/NOTICE index 6285a2e..6cd6f73 100644 --- a/asterixdb/NOTICE +++ b/asterixdb/NOTICE @@ -1,5 +1,5 @@ Apache AsterixDB -Copyright 2015 The Apache Software Foundation +Copyright 2015-2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js b/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js index 1f444dc..862622d 100644 --- a/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js +++ b/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js @@ -2,7 +2,7 @@ RainbowVis-JS Released under MIT License -Source: https://github.com/anomal/RainbowVis-JS +Source: https://github.com/anomal/RainbowVis-JS/blob/e160e6db8be28f7de99ba17c6566007410ee1f98/rainbowvis.js */ function Rainbow() @@ -10,10 +10,10 @@ function Rainbow() var gradients = null; var minNum = 0; var maxNum = 100; - var colours = ['ff0000', 'ffff00', '00ff00', '0000ff']; + var colours = ['ff0000', 'ffff00', '00ff00', '0000ff']; setColours(colours); - - function setColours (spectrum) + + function setColours (spectrum) { if (spectrum.length < 2) { throw new Error('Rainbow must have two or more colours.'); @@ -23,12 +23,12 @@ function Rainbow() firstGradient.setGradient(spectrum[0], spectrum[1]); firstGradient.setNumberRange(minNum, minNum + increment); gradients = [ firstGradient ]; - + for (var i = 1; i < spectrum.length - 1; i++) { var colourGradient = new ColourGradient(); colourGradient.setGradient(spectrum[i], spectrum[i + 1]); - colourGradient.setNumberRange(minNum + increment * i, minNum + increment * (i + 1)); - gradients[i] = colourGradient; + colourGradient.setNumberRange(minNum + increment * i, minNum + increment * (i + 1)); + gradients[i] = colourGradient; } colours = spectrum; @@ -38,7 +38,7 @@ function Rainbow() this.setColors = this.setColours; - this.setSpectrum = function () + this.setSpectrum = function () { setColours(arguments); return this; @@ -78,7 +78,7 @@ function Rainbow() } } -function ColourGradient() +function ColourGradient() { var startColour = 'ff0000'; var endColour = '0000ff'; @@ -103,11 +103,11 @@ function ColourGradient() this.colourAt = function (number) { - return calcHex(number, startColour.substring(0,2), endColour.substring(0,2)) - + calcHex(number, startColour.substring(2,4), endColour.substring(2,4)) + return calcHex(number, startColour.substring(0,2), endColour.substring(0,2)) + + calcHex(number, startColour.substring(2,4), endColour.substring(2,4)) + calcHex(number, startColour.substring(4,6), endColour.substring(4,6)); } - + function calcHex(number, channelStart_Base16, channelEnd_Base16) { var num = number; @@ -116,24 +116,24 @@ function ColourGradient() } if (num > maxNum) { num = maxNum; - } + } var numRange = maxNum - minNum; var cStart_Base10 = parseInt(channelStart_Base16, 16); - var cEnd_Base10 = parseInt(channelEnd_Base16, 16); + var cEnd_Base10 = parseInt(channelEnd_Base16, 16); var cPerUnit = (cEnd_Base10 - cStart_Base10)/numRange; var c_Base10 = Math.round(cPerUnit * (num - minNum) + cStart_Base10); return formatHex(c_Base10.toString(16)); } - formatHex = function (hex) + formatHex = function (hex) { if (hex.length === 1) { return '0' + hex; } else { return hex; } - } - + } + function isHexColour(string) { var regex = /^#?[0-9a-fA-F]{6}$/i; @@ -175,4 +175,3 @@ function ColourGradient() } } } - http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-installer/pom.xml ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-installer/pom.xml b/asterixdb/asterix-installer/pom.xml index 2f34f1d..d0b84ae 100644 --- a/asterixdb/asterix-installer/pom.xml +++ b/asterixdb/asterix-installer/pom.xml @@ -41,9 +41,9 @@ - org.apache.asterix + org.apache.hyracks license-automation-plugin - ${project.version} + ${hyracks.version} generate-resources @@ -60,7 +60,7 @@ LICENSE - + NOTICE @@ -129,8 +129,9 @@ - asterix/asterix-server-${project.version}-binary-assembly.zip Managix Install + repo/asterix-app-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip + repo/hyracks-control-cc-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-license/pom.xml ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-license/pom.xml b/asterixdb/asterix-license/pom.xml new file mode 100644 index 0000000..533b23e --- /dev/null +++ b/asterixdb/asterix-license/pom.xml @@ -0,0 +1,122 @@ + + + 4.0.0 + asterix-license + asterix-license + + org.apache.asterix + apache-asterixdb + 0.8.9-SNAPSHOT + + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + A business-friendly OSS license + + + + + + + org.apache.hyracks + license-automation-plugin + ${hyracks.version} + + + generate-resources + + generate + + + + + ${basedir}/../../ + ${basedir}/.. + ignored + + + + LICENSE + + + + NOTICE + + + + test + + ${basedir}/../src/main/licenses/content + + ${basedir}/../src/main/appended-resources/supplemental-models.xml + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + http://www.apache.org/licenses/LICENSE-2.0.html + + 1 + + + + + asterix-app/src/main/resources/ + + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.apache.asterix + license-automation-plugin + ${project.version} + + generate + + + + + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml b/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml deleted file mode 100644 index 6abbf71..0000000 --- a/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - org.apache.asterix - asterix-maven-plugins - 0.8.9-SNAPSHOT - - 4.0.0 - maven-plugin - - license-automation-plugin - - - org.apache.maven.plugin-tools - maven-plugin-annotations - 3.5 - - - org.apache.maven - maven-core - 3.3.9 - - - org.apache.maven.plugins - maven-remote-resources-plugin - 1.5 - - - com.fasterxml.jackson.core - jackson-databind - 2.8.4 - - - org.freemarker - freemarker - 2.3.23 - - - commons-io - commons-io - - - com.fasterxml.jackson.core - jackson-annotations - 2.8.0 - - - org.apache.maven - maven-project - 2.2.1 - - - org.apache.maven - maven-model - 3.3.9 - - - org.apache.commons - commons-lang3 - - - org.codehaus.plexus - plexus-utils - 3.0.22 - - - org.apache.maven - maven-artifact - 3.0 - - - - \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java deleted file mode 100644 index 64e5f7d..0000000 --- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.asterix.license; - -import java.util.List; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -public class DependencySet { - - @SuppressWarnings("unused") // set by Maven configuration - private String location; - - @SuppressWarnings({"unused", "MismatchedQueryAndUpdateOfCollection"}) // set by Maven configuration - private List includes; - - private List patterns; - - public String getLocation() { - return location; - } - - public List getPatterns() { - if (patterns == null) { - patterns = includes.stream().map(LicenseMojo::compileGAWildcardPattern).collect(Collectors.toList()); - } - return patterns; - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java deleted file mode 100644 index cb9f172..0000000 --- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.asterix.license; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.commons.io.IOUtils; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.LifecyclePhase; -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.ProjectBuildingException; - -@Mojo(name = "licensedownload", - requiresProject = true, - requiresDependencyResolution = ResolutionScope.TEST, - defaultPhase = LifecyclePhase.GENERATE_RESOURCES) -public class DownloadLicensesMojo extends LicenseMojo { - - @Parameter(required = true) - private File downloadDir; - - @Parameter(defaultValue = "30") - private int timeoutSecs; - - @java.lang.Override - public void execute() throws MojoExecutionException, MojoFailureException { - try { - init(); - addDependenciesToLicenseMap(); - final int timeoutMillis = (int) TimeUnit.SECONDS.toMillis(timeoutSecs); - //noinspection ResultOfMethodCallIgnored - downloadDir.mkdirs(); - AtomicInteger counter = new AtomicInteger(); - getLicenseMap().values().parallelStream().forEach(entry -> { - final int i = counter.incrementAndGet(); - final String url = entry.getLicense().getUrl(); - String fileName = entry.getLicense().getContentFile(false); - doDownload(timeoutMillis, i, url, fileName); - }); - } catch (IOException | ProjectBuildingException e) { - throw new MojoExecutionException("Unexpected exception: " + e, e); - } - } - - private void doDownload(int timeoutMillis, int id, String url, String fileName) { - try { - HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection(); - conn.setConnectTimeout(timeoutMillis); - conn.setReadTimeout(timeoutMillis); - conn.setRequestMethod("GET"); - final File outFile = new File(downloadDir, fileName); - getLog().info("[" + id + "] " + url + " -> " + outFile); - final InputStream is = conn.getInputStream(); - FileWriter writer = new FileWriter(outFile); - IOUtils.copy(is, writer, conn.getContentEncoding()); - writer.close(); - getLog().info("[" + id + "] ...done!"); - } catch (IOException e) { - getLog().warn("[" + id + "] ...error downloading " + url + ": " + e); - } - } -} - http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java deleted file mode 100644 index 6a0c163..0000000 --- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.asterix.license; - -import java.io.File; - -public class ExtraLicenseFile { - private File file; - private String location; - private boolean additive = true; - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - public File getFile() { - return file; - } - - public void setFile(File file) { - this.file = file; - } - - public boolean isAdditive() { - return additive; - } - - public void setAdditive(boolean additive) { - this.additive = additive; - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java deleted file mode 100644 index 191aa6b..0000000 --- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.asterix.license; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.StringWriter; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.SortedSet; -import java.util.TreeMap; -import java.util.TreeSet; -import java.util.function.BiConsumer; -import java.util.function.Predicate; -import java.util.function.UnaryOperator; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.regex.Pattern; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SequenceWriter; -import freemarker.cache.FileTemplateLoader; -import freemarker.template.Configuration; -import freemarker.template.Template; -import freemarker.template.TemplateException; -import org.apache.asterix.license.freemarker.IndentDirective; -import org.apache.asterix.license.freemarker.LoadFileDirective; -import org.apache.asterix.license.project.LicensedProjects; -import org.apache.asterix.license.project.Project; -import org.apache.commons.io.IOUtils; -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.ProjectBuildingException; - -@Mojo(name = "generate", - requiresProject = true, - requiresDependencyResolution = ResolutionScope.TEST) -public class GenerateFileMojo extends LicenseMojo { - - public static final Pattern FOUNDATION_PATTERN = Pattern.compile("^\\s*This product includes software developed " + - "(at|by) The Apache Software Foundation \\(http://www.apache.org/\\).\\s*$".replace(" ", "\\s+"), - Pattern.DOTALL | Pattern.MULTILINE); - - public static final Comparator WHITESPACE_NORMALIZED_COMPARATOR = - (o1, o2) -> o1.replaceAll("\\s+", " ").compareTo(o2.replaceAll("\\s+", " ")); - - @Parameter(required = true) - private File templateRootDir; - - @Parameter(defaultValue = "${project.build.directory}/generated-sources") - private File outputDir; - - @Parameter - private List generatedFiles = new ArrayList<>(); - - @Parameter(defaultValue = "${project.build.sourceEncoding}") - private String encoding; - - @Parameter - private File licenseMapOutputFile; - - @Parameter - private List extraLicenseMaps = new ArrayList<>(); - - @Parameter - protected Map templateProperties = new HashMap<>(); - - @Parameter - private boolean stripFoundationAssertionFromNotices = true; - - private SortedMap> noticeMap; - - @java.lang.Override - public void execute() throws MojoExecutionException, MojoFailureException { - try { - init(); - readExtraMaps(); - addDependenciesToLicenseMap(); - resolveLicenseContent(); - resolveNoticeFiles(); - resolveLicenseFiles(); - rebuildLicenseContentProjectMap(); - buildNoticeProjectMap(); - persistLicenseMap(); - combineCommonGavs(); - generateFiles(); - } catch (IOException | TemplateException | ProjectBuildingException e) { - throw new MojoExecutionException("Unexpected exception: " + e, e); - } - } - - private void resolveLicenseContent() throws IOException { - for (LicensedProjects licensedProjects : licenseMap.values()) { - final LicenseSpec license = licensedProjects.getLicense(); - if (license.getContent() == null) { - getLog().debug("Resolving content for " + license.getUrl() + " (" + license.getContentFile() + ")"); - File cFile = new File(license.getContentFile()); - if (!cFile.isAbsolute()) { - cFile = new File(licenseDirectory, license.getContentFile()); - } - if (!cFile.exists()) { - getLog().warn("MISSING: license content file (" + cFile + ") for url: " + license.getUrl()); - license.setContent("MISSING: " + license.getContentFile() + " (" + license.getUrl() + ")"); - } else { - StringWriter sw = new StringWriter(); - LicenseUtil.readAndTrim(sw, cFile); - license.setContent(sw.toString()); - } - } - } - } - - private void combineCommonGavs() { - for (LicensedProjects licensedProjects : licenseMap.values()) { - Map projectMap = new HashMap<>(); - for (Iterator iter = licensedProjects.getProjects().iterator(); iter.hasNext(); ) { - Project project = iter.next(); - if (projectMap.containsKey(project.gav())) { - Project first = projectMap.get(project.gav()); - first.setLocation(first.getLocation() + "," + project.getLocation()); - iter.remove(); - } else { - projectMap.put(project.gav(), project); - } - } - } - } - - private void generateFiles() throws TemplateException, IOException { - Map props = getProperties(); - - Configuration config = new Configuration(); - config.setTemplateLoader(new FileTemplateLoader(templateRootDir)); - for (GeneratedFile generation : generatedFiles) { - Template template = config.getTemplate(generation.getTemplate()); - - if (template == null) { - throw new IOException("Could not load template " + generation.getTemplate()); - } - - outputDir.mkdirs(); - final File file = new File(outputDir, generation.getOutputFile()); - getLog().info("Writing " + file + "..."); - try (final FileWriter writer = new FileWriter(file)) { - template.process(props, writer); - } - } - } - - protected Map getProperties() { - Map props = new HashMap<>(); - props.put("indent", new IndentDirective()); - props.put("loadfile", new LoadFileDirective()); - props.put("project", project); - props.put("noticeMap", noticeMap.entrySet()); - props.put("licenseMap", licenseMap.entrySet()); - props.putAll(templateProperties); - return props; - } - - private void readExtraMaps() throws IOException { - final ObjectMapper objectMapper = new ObjectMapper(); - for (ExtraLicenseFile extraLicenseFile : extraLicenseMaps) { - for (LicensedProjects projects : - objectMapper.readValue(extraLicenseFile.getFile(), LicensedProjects[].class)) { - LicenseSpec spec = urlToLicenseMap.get(projects.getLicense().getUrl()); - if (spec != null) { - // TODO(mblow): probably we should always favor the extra map... - // propagate any license content we may have with what already has been loaded - if (projects.getLicense().getContent() != null && - spec.getContent() == null) { - spec.setContent(projects.getLicense().getContent()); - } - // propagate any license displayName we may have with what already has been loaded - if (projects.getLicense().getDisplayName() != null && - spec.getDisplayName() == null) { - spec.setDisplayName(projects.getLicense().getDisplayName()); - } - } - for (Project project : projects.getProjects()) { - project.setLocation(extraLicenseFile.getLocation()); - addProject(project, projects.getLicense(), extraLicenseFile.isAdditive()); - } - } - } - } - - private void persistLicenseMap() throws IOException { - if (licenseMapOutputFile != null) { - licenseMapOutputFile.getParentFile().mkdirs(); - SequenceWriter sw = new ObjectMapper().writerWithDefaultPrettyPrinter() - .writeValues(licenseMapOutputFile).init(true); - for (LicensedProjects entry : licenseMap.values()) { - sw.write(entry); - } - sw.close(); - } - } - - private void rebuildLicenseContentProjectMap() { - int counter = 0; - Map licenseMap2 = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR); - for (LicensedProjects lps : licenseMap.values()) { - for (Project project : lps.getProjects()) { - String licenseText = project.getLicenseText(); - if (licenseText == null) { - getLog().warn("Using license other than from within artifact: " + project.gav()); - licenseText = lps.getLicense().getContent(); - } - if (!licenseMap2.containsKey(licenseText)) { - LicenseSpec spec = lps.getLicense(); - if (!licenseText.equals(lps.getLicense().getContent())) { - spec = new LicenseSpec(new ArrayList<>(), licenseText, null, spec.getDisplayName(), - spec.getMetric(), spec.getUrl() + (counter++)); - } - licenseMap2.put(licenseText, new LicensedProjects(spec)); - } - licenseMap2.get(licenseText).addProject(project); - } - } - licenseMap = licenseMap2; - } - - private Set getProjects() { - Set projects = new HashSet<>(); - licenseMap.values().forEach(p -> projects.addAll(p.getProjects())); - return projects; - } - - private void buildNoticeProjectMap() { - noticeMap = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR); - for (Project project : getProjects()) { - final String noticeText = project.getNoticeText(); - if (noticeText == null) { - continue; - } - if (!noticeMap.containsKey(noticeText)) { - noticeMap.put(noticeText, new TreeSet<>(Project.PROJECT_COMPARATOR)); - } - noticeMap.get(noticeText).add(project); - } - } - - private void resolveNoticeFiles() throws MojoExecutionException, IOException { - resolveArtifactFiles("NOTICE", entry -> entry.getName().matches("(.*/|^)" + "NOTICE" + "(.txt)?"), - Project::setNoticeText, - text -> stripFoundationAssertionFromNotices ? FOUNDATION_PATTERN.matcher(text).replaceAll("") : text); - } - - private void resolveLicenseFiles() throws MojoExecutionException, IOException { - resolveArtifactFiles("LICENSE", entry -> entry.getName().matches("(.*/|^)" + "LICENSE" + "(.txt)?"), - Project::setLicenseText, UnaryOperator.identity()); - } - - private void resolveArtifactFiles(final String name, Predicate filter, - BiConsumer consumer, UnaryOperator contentTransformer) - throws MojoExecutionException, IOException { - for (Project project : getProjects()) { - File artifactFile = new File(project.getArtifactPath()); - 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); - continue; - } - try (JarFile jarFile = new JarFile(artifactFile)) { - SortedMap matches = gatherMatchingEntries(jarFile, - filter); - if (matches.isEmpty()) { - getLog().warn("No " + name + " file found for " + project.gav()); - } else { - if (matches.size() > 1) { - getLog().warn("Multiple " + name + " files found for " + project.gav() + ": " + matches.keySet() - + "; taking first"); - } else { - getLog().info(project.gav() + " has " + name + " file: " + matches.keySet()); - } - resolveContent(project, jarFile, matches.values().iterator().next(), - contentTransformer, consumer, name); - } - } - } - } - - private void resolveContent(Project project, JarFile jarFile, JarEntry entry, UnaryOperator transformer, - BiConsumer contentConsumer, final String name) throws IOException { - String text = IOUtils.toString(jarFile.getInputStream(entry), StandardCharsets.UTF_8); - text = transformer.apply(text); - text = LicenseUtil.trim(text); - if (text.length() == 0) { - getLog().warn("Ignoring empty " + name + " file ( " + entry + ") for " + project.gav()); - } else { - contentConsumer.accept(project, text); - getLog().debug("Resolved " + name + " text for " + project.gav() + ": \n" + text); - } - } - - private SortedMap gatherMatchingEntries(JarFile jarFile, Predicate filter) { - SortedMap matches = new TreeMap<>(); - Enumeration entries = jarFile.entries(); - while (entries.hasMoreElements()) { - JarEntry entry = entries.nextElement(); - if (filter.test(entry)) { - matches.put(entry.getName(), entry); - } - } - return matches; - } -} - http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java deleted file mode 100644 index b89dc88..0000000 --- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.asterix.license; - -public class GeneratedFile { - - @SuppressWarnings("unused") // set by Maven plugin configuration - private String template; - - @SuppressWarnings("unused") // set by Maven plugin configuration - private String outputFile; - - public String getOutputFile() { - return outputFile; - } - - public String getTemplate() { - return template; - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java deleted file mode 100644 index eab4f10..0000000 --- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.asterix.license; - -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -import org.apache.asterix.license.project.LicensedProjects; -import org.apache.asterix.license.project.Project; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.model.License; -import org.apache.maven.model.Model; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.annotations.Component; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectBuilder; -import org.apache.maven.project.ProjectBuildingException; -import org.apache.maven.project.inheritance.ModelInheritanceAssembler; - -public abstract class LicenseMojo extends AbstractMojo { - - @Parameter - protected List overrides = new ArrayList<>(); - - @Parameter - protected String [] models = new String [0]; - - @Parameter - protected List licenses = new ArrayList<>(); - - @Parameter - protected Set excludedScopes = new HashSet<>(); - - @Parameter - protected List excludes = new ArrayList<>(); - - @Parameter - protected List dependencySets = new ArrayList<>(); - - @Parameter( defaultValue = "${project}", readonly = true ) - protected MavenProject project; - - @Parameter( property = "localRepository", required = true, readonly = true ) - private ArtifactRepository localRepository; - - @Parameter( property = "project.remoteArtifactRepositories", required = true, readonly = true ) - private List remoteRepositories; - - @Component( role = MavenProjectBuilder.class ) - protected MavenProjectBuilder projectBuilder; - - @Component - private ModelInheritanceAssembler assembler; - - @Parameter ( required = true ) - private String location; - - @Parameter ( required = true ) - protected File licenseDirectory; - - private Map projectCache = new HashMap<>(); - - private Map supplementModels; - - private List excludePatterns; - - Map urlToLicenseMap = new HashMap<>(); - Map licenseMap = new TreeMap<>(); - - protected Map getLicenseMap() { - return licenseMap; - } - - protected void init() throws MojoExecutionException, MalformedURLException, - ProjectBuildingException { - excludedScopes.add("system"); - excludePatterns = compileExcludePatterns(); - supplementModels = SupplementalModelHelper.loadSupplements(getLog(), models); - buildUrlLicenseMap(); - } - - protected void addDependenciesToLicenseMap() throws ProjectBuildingException { - Map>> dependencyLicenseMap = gatherDependencies(); - for (Map.Entry>> dep : dependencyLicenseMap.entrySet()) { - final MavenProject depProject = dep.getKey(); - String depLocation = dependencySets.isEmpty() ? location : getIncludedLocation(depProject.getArtifact()); - if (isExcluded(depProject.getArtifact())) { - getLog().debug("skipping " + depProject + " [excluded]"); - } else if (depLocation == null) { - getLog().debug("skipping " + depProject + " [not included in dependency sets]"); - } else { - addDependencyToLicenseMap(depProject, dep.getValue(), depLocation); - } - } - } - - private void addDependencyToLicenseMap(MavenProject depProject, List> depLicenses, - String depLocation) { - final String depGav = toGav(depProject); - getLog().debug("adding " + depGav + ", location: " + depLocation); - if (depLicenses.size() > 1) { - Collections.sort(depLicenses, (o1, o2) -> { - final LicenseSpec l1 = urlToLicenseMap.get(o1.getLeft()); - final LicenseSpec l2 = urlToLicenseMap.get(o2.getLeft()); - return Integer.compare(l1 != null ? l1.getMetric() : LicenseSpec.UNDEFINED_LICENSE_METRIC, - l2 != null ? l2.getMetric() : LicenseSpec.UNDEFINED_LICENSE_METRIC); - }); - getLog().warn("Multiple licenses for " + depGav + ": " + depLicenses - + "; taking first or lowest metric."); - } else if (depLicenses.isEmpty()) { - getLog().error("No license defined for " + depGav); - depLicenses.add(new ImmutablePair<>("MISSING_LICENSE", "MISSING LICENSE")); - } - Pair key = depLicenses.get(0); - String licenseUrl = key.getLeft(); - final String displayName = key.getRight(); - if (!urlToLicenseMap.containsKey(licenseUrl)) { - // assuming we've not already mapped it, annotate the URL with artifact info, if not an actual URL - try { - getLog().debug("- URL: " + new URL(licenseUrl)); - // life is good - } catch (MalformedURLException e) { - // we encounter this a lot. Log a warning, and use an annotated key - final String fakeLicenseUrl = depGav.replaceAll(":", "--") + "_" + licenseUrl; - getLog().warn("- URL for " + depGav + " is malformed: " + licenseUrl + "; using: " - + fakeLicenseUrl); - licenseUrl = fakeLicenseUrl; - } - } - addProject(new Project(depProject, depLocation, depProject.getArtifact().getFile()), - new LicenseSpec(licenseUrl, displayName), true); - } - - protected void addProject(Project project, LicenseSpec spec, boolean additive) { - String licenseUrl = spec.getUrl(); - LicenseSpec license = urlToLicenseMap.get(licenseUrl); - if (license == null) { - license = spec; - urlToLicenseMap.put(licenseUrl, license); - for (String alias : license.getAliasUrls()) { - if (!urlToLicenseMap.containsKey(alias)) { - urlToLicenseMap.put(alias ,license); - } - } - } - licenseUrl = license.getUrl(); - LicensedProjects entry = licenseMap.get(licenseUrl); - if (entry == null) { - entry = new LicensedProjects(license); - licenseMap.put(licenseUrl, entry); - } - if (additive || entry.getProjects().contains(project)) { - entry.addProject(project); - } - } - - private void buildUrlLicenseMap() throws MojoExecutionException { - for (LicenseSpec license : licenses) { - if (urlToLicenseMap.put(license.getUrl() ,license) != null) { - throw new MojoExecutionException("Duplicate URL mapping: " + license.getUrl()); - } - for (String alias : license.getAliasUrls()) { - if (urlToLicenseMap.put(alias ,license) != null) { - throw new MojoExecutionException("Duplicate URL mapping: " + alias); - } - } - } - } - - protected Map>> gatherDependencies() throws ProjectBuildingException { - Map>> dependencyLicenseMap = new HashMap<>(); - Map dependencyGavMap = new HashMap<>(); - - 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..."); - } else { - final List> newUrl = Collections.singletonList( - new ImmutablePair<>(override.getUrl(), override.getName())); - List> prev = dependencyLicenseMap.put(dep, newUrl); - if (!prev.isEmpty()) { - getLog().warn("NOTICE: replacing license(s) " + prev + " for dependency " + gav + " with " - + newUrl); - } - } - } - return dependencyLicenseMap; - } - - private void gatherProjectDependencies(MavenProject project, Map>> dependencyLicenseMap, Map dependencyGavMap) - throws ProjectBuildingException { - final Set dependencyArtifacts = project.getArtifacts(); - if (dependencyArtifacts != null) { - for (Object depArtifactObj : dependencyArtifacts) { - final Artifact depArtifact = (Artifact) depArtifactObj; - if (!excludedScopes.contains(depArtifact.getScope())) { - MavenProject dep = resolveDependency(depArtifact); - dep.setArtifact(depArtifact); - dependencyGavMap.put(toGav(dep), dep); - List> licenseUrls = new ArrayList<>(); - for (Object license : dep.getLicenses()) { - final License license1 = (License) license; - String url = license1.getUrl() != null ? license1.getUrl() - : (license1.getName() != null ? license1.getName() - : "LICENSE_EMPTY_NAME_URL"); - licenseUrls.add(new ImmutablePair<>(url, license1.getName())); - } - dependencyLicenseMap.put(dep, licenseUrls); - } - } - } - } - - protected MavenProject resolveDependency(Artifact depObj) throws ProjectBuildingException { - String key = depObj.getGroupId() + ":" + depObj.getArtifactId() + ":" + depObj.getVersion(); - - MavenProject depProj = projectCache.get(key); - - if (depProj == null) { - try { - depProj = projectBuilder.buildFromRepository(depObj, remoteRepositories, localRepository, false); - } catch (ProjectBuildingException e) { - throw new ProjectBuildingException(key, "Error creating dependent artifacts", e); - } - - Model supplement = supplementModels.get( - SupplementalModelHelper.generateSupplementMapKey(depObj.getGroupId(), depObj.getArtifactId())); - if (supplement != null) { - Model merged = SupplementalModelHelper.mergeModels(assembler, depProj.getModel(), supplement); - Set origLicenses = depProj.getModel().getLicenses().stream().map(License::getUrl) - .collect(Collectors.toSet()); - Set newLicenses = merged.getLicenses().stream().map(License::getUrl) - .collect(Collectors.toSet()); - if (!origLicenses.equals(newLicenses)) { - getLog().warn("license list for " + toGav(depProj) - + " changed with supplemental model; was: " + origLicenses - + ", now: " + newLicenses); - } - depProj = new MavenProject(merged); - depProj.setArtifact( depObj ); - depProj.setVersion( depObj.getVersion() ); - } - depProj.getArtifact().setScope(depObj.getScope()); - projectCache.put(key, depProj); - } - return depProj; - } - - private String toGav(MavenProject dep) { - return dep.getGroupId() + ":" + dep.getArtifactId() + ":" + dep.getVersion(); - } - - protected List compileExcludePatterns() { - List patterns = new ArrayList<>(); - for (String exclude : excludes) { - patterns.add(compileGAWildcardPattern(exclude)); - } - return patterns; - } - - public static Pattern compileGAWildcardPattern(String spec) { - return Pattern.compile(spec.replace(".", "\\.").replace("*", "[^:]*")); - } - - protected boolean isExcluded(Artifact artifact) { - for (Pattern exclude : excludePatterns) { - if (exclude.matcher(artifact.getGroupId() + ":" + artifact.getArtifactId()).matches()) { - return true; - } - } - return false; - } - - protected String getIncludedLocation(Artifact artifact) { - for (DependencySet set : dependencySets) { - for (Pattern include : set.getPatterns()) { - if (include.matcher(artifact.getGroupId() + ":" + artifact.getArtifactId()).matches()) { - return set.getLocation(); - } - } - } - return null; - } -} -