This is an automated email from the ASF dual-hosted git repository. mosermw pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push: new 786784ef62 NIFI-12290 Migrated from Quartz to Spring for Cron Expressions 786784ef62 is described below commit 786784ef62188b2b018ee262c2e8a750fb507789 Author: exceptionfactory <exceptionfact...@apache.org> AuthorDate: Sat Oct 28 18:42:46 2023 -0500 NIFI-12290 Migrated from Quartz to Spring for Cron Expressions - Removed support for Year field in Cron Expressions - Changed numeric Day of Week field from starting with 1 to starting with 0 - Removed Quartz and C3P0 from Notice files This closes #7951 Signed-off-by: Mike Moser <mose...@apache.org> --- minifi/minifi-assembly/NOTICE | 22 ---- minifi/minifi-c2/minifi-c2-assembly/NOTICE | 21 ---- .../src/main/resources/META-INF/NOTICE | 21 ---- .../src/main/resources/META-INF/NOTICE | 21 ---- .../minifi-toolkit/minifi-toolkit-assembly/NOTICE | 21 ---- nifi-assembly/NOTICE | 21 ---- nifi-dependency-check-maven/suppressions.xml | 5 - nifi-docs/src/main/asciidoc/user-guide.adoc | 9 +- .../nifi-kafka-connector-assembly/NOTICE | 9 -- .../src/main/resources/META-INF/NOTICE | 21 ---- .../nifi-framework-components/pom.xml | 4 +- .../nifi/controller/StandardProcessorNode.java | 4 +- .../org/apache/nifi/controller/FlowController.java | 6 +- .../scheduling/AbstractSchedulingAgent.java | 2 +- ...hedulingAgent.java => CronSchedulingAgent.java} | 58 ++++++----- .../scheduling/CronSchedulingAgentTest.java | 114 +++++++++++++++++++++ .../controller/scheduling/DummyScheduleState.java | 26 ----- .../nifi-framework/nifi-web/nifi-web-api/pom.xml | 5 - .../nifi/web/dao/impl/StandardProcessorDAO.java | 9 +- .../web/dao/impl/StandardReportingTaskDAO.java | 9 +- .../src/main/resources/META-INF/NOTICE | 21 ---- .../src/main/resources/META-INF/NOTICE | 21 ---- nifi-nar-bundles/nifi-framework-bundle/pom.xml | 5 - .../src/main/resources/META-INF/NOTICE | 21 ---- nifi-stateless/nifi-stateless-assembly/NOTICE | 8 -- .../src/main/resources/META-INF/NOTICE | 9 -- 26 files changed, 164 insertions(+), 329 deletions(-) diff --git a/minifi/minifi-assembly/NOTICE b/minifi/minifi-assembly/NOTICE index 82b55b88d9..e37359ea7c 100644 --- a/minifi/minifi-assembly/NOTICE +++ b/minifi/minifi-assembly/NOTICE @@ -589,28 +589,6 @@ The following binary components are provided under the Apache Software License v Curator Recipes Copyright 2011-2014 The Apache Software Foundation - - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at https://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - https://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - ************************ Common Development and Distribution License 1.1 ************************ diff --git a/minifi/minifi-c2/minifi-c2-assembly/NOTICE b/minifi/minifi-c2/minifi-c2-assembly/NOTICE index 8dbf0ee4be..ca826d00b0 100644 --- a/minifi/minifi-c2/minifi-c2-assembly/NOTICE +++ b/minifi/minifi-c2/minifi-c2-assembly/NOTICE @@ -160,27 +160,6 @@ The following binary components are provided under the Apache Software License v Spring Framework 5 Copyright (c) 2002-2021 Pivotal, Inc. - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at https://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - https://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) Apache Commons IO The following NOTICE information applies: Apache Commons IO diff --git a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE index 4bf7e7e3b7..977bf13588 100644 --- a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE +++ b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE @@ -109,27 +109,6 @@ The following binary components are provided under the Apache Software License v The following NOTICE information applies: Copyright 2011 JsonPath authors - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - http://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) Jackson JSON processor The following NOTICE information applies: # Jackson JSON processor diff --git a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE index a38c57ba46..e64fc8c3d2 100644 --- a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE +++ b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE @@ -111,27 +111,6 @@ The following binary components are provided under the Apache Software License v The following NOTICE information applies: Copyright 2011 JsonPath authors - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - http://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) Jackson JSON processor The following NOTICE information applies: # Jackson JSON processor diff --git a/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE b/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE index 8afb777918..89181f7c06 100644 --- a/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE +++ b/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE @@ -109,27 +109,6 @@ The following binary components are provided under the Apache Software License v Spring Framework 5 Copyright (c) 2002-2021 Pivotal, Inc. - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at https://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - https://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) Apache Commons IO The following NOTICE information applies: Apache Commons IO diff --git a/nifi-assembly/NOTICE b/nifi-assembly/NOTICE index be10b2e9cf..c85be06b05 100644 --- a/nifi-assembly/NOTICE +++ b/nifi-assembly/NOTICE @@ -295,27 +295,6 @@ The following binary components are provided under the Apache Software License v The Apache Tika Plugin includes developed at The Apache Software Foundation (http://www.apache.org/). - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - http://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) JCommander The following NOTICE information applies: JCommander Copyright Notices diff --git a/nifi-dependency-check-maven/suppressions.xml b/nifi-dependency-check-maven/suppressions.xml index 4aabb50d94..97ceaf1c8a 100644 --- a/nifi-dependency-check-maven/suppressions.xml +++ b/nifi-dependency-check-maven/suppressions.xml @@ -194,11 +194,6 @@ <packageUrl regex="true">^pkg:maven/org\.apache\.solr/solr\-solrj@.*$</packageUrl> <cve>CVE-2023-44487</cve> </suppress> - <suppress> - <notes>Quartz maintainers dispute CVE-2023-39017 because it requires code injection from external users</notes> - <packageUrl regex="true">^pkg:maven/org\.quartz\-scheduler/quartz@.*$</packageUrl> - <cve>CVE-2023-39017</cve> - </suppress> <suppress> <notes>Avro project vulnerabilities do not apply to Parquet Avro</notes> <packageUrl regex="true">^pkg:maven/org\.apache\.parquet/parquet\-avro@.*$</packageUrl> diff --git a/nifi-docs/src/main/asciidoc/user-guide.adoc b/nifi-docs/src/main/asciidoc/user-guide.adoc index d46f999b98..bc5cc447d7 100644 --- a/nifi-docs/src/main/asciidoc/user-guide.adoc +++ b/nifi-docs/src/main/asciidoc/user-guide.adoc @@ -577,10 +577,8 @@ The first configuration option is the Scheduling Strategy. There are three possi |1-12 or JAN-DEC |Day of Week -|1-7 or SUN-SAT +|0-7 or SUN-SAT (0 or 7 is Sunday) -|Year (optional) -|empty, 1970-2099 |=== You typically specify values one of the following ways: @@ -598,11 +596,8 @@ example, 1L indicates the last Sunday of the month. For example: -* The string `0 0 13 * * ?` indicates that you want to schedule the processor to run at 1:00 PM every day. +* The string `0 0 13 * * *` indicates that you want to schedule the processor to run at 1:00 PM every day. * The string `0 20 14 ? * MON-FRI` indicates that you want to schedule the processor to run at 2:20 PM every Monday through Friday. -* The string `0 15 10 ? * 6L 2011-2017` indicates that you want to schedule the processor to run at 10:15 AM, on the last Friday of every month, between 2011 and 2017. - -For additional information and examples, see the link:https://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/tutorial-lesson-06.html[cron triggers tutorial] in the link:https://www.quartz-scheduler.org/documentation/[Quartz Documentation^]. ===== Concurrent Tasks Next, the Scheduling tab provides a configuration option named 'Concurrent Tasks'. This controls how many threads the Processor diff --git a/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE index e0fe281b12..3a0c14ec89 100644 --- a/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE +++ b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE @@ -136,12 +136,3 @@ The following binary components are provided under the Common Development and Di (CDDL 1.1) (GPL2 w/ CPE) jersey-media-multipart (org.glassfish.jersey.media:jersey-media-multipart:jar:2.26 - https://jersey.github.io/) (CDDL 1.1) (GPL2 w/ CPE) MIME Streaming Extension (org.jvnet.mimepull:mimepull:jar:1.9.3 - http://mimepull.java.net) (CDDL 1.1) (GPL2 w/ CPE) OSGi resource locator bundle (org.glassfish.hk2:osgi-resource-locator:jar:1.0.1 - http://glassfish.org/osgi-resource-locator) - - -************************ -Eclipse Public License 1.0 -************************ - -The following binary components are provided under the Eclipse Public License 1.0. See project link for details. - - (EPL 1.0)(LGPL 2.1) c3p0 (com.mchange:c3p0:jar:0.9.5.4 - https://github.com/swaldman/c3p0) diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE index 7fd5e92920..b84361b3c1 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE @@ -124,27 +124,6 @@ The following binary components are provided under the Apache Software License v The following NOTICE information applies: Copyright 2011 JsonPath authors - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - http://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) Jackson JSON processor The following NOTICE information applies: # Jackson JSON processor diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml index e113cdcf09..81a223b467 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml @@ -66,8 +66,8 @@ <artifactId>nifi-web-utils</artifactId> </dependency> <dependency> - <groupId>org.quartz-scheduler</groupId> - <artifactId>quartz</artifactId> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.apache.nifi</groupId> diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java index aa9db36158..3781655bf3 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java @@ -88,7 +88,7 @@ import org.apache.nifi.util.FormatUtils; import org.apache.nifi.util.ReflectionUtils; import org.apache.nifi.util.ThreadUtils; import org.apache.nifi.util.file.classloader.ClassLoaderUtils; -import org.quartz.CronExpression; +import org.springframework.scheduling.support.CronExpression; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1155,7 +1155,7 @@ public class StandardProcessorNode extends ProcessorNode implements Connectable switch (schedulingStrategy) { case CRON_DRIVEN: { try { - new CronExpression(evaluatedSchedulingPeriod); + CronExpression.parse(evaluatedSchedulingPeriod); } catch (final Exception e) { results.add(new ValidationResult.Builder() .subject(RUN_SCHEDULE) diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java index e811a0f711..53ad12c56c 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java @@ -103,7 +103,7 @@ import org.apache.nifi.controller.repository.claim.StandardContentClaim; import org.apache.nifi.controller.repository.claim.StandardResourceClaimManager; import org.apache.nifi.controller.repository.io.LimitedInputStream; import org.apache.nifi.controller.scheduling.LifecycleStateManager; -import org.apache.nifi.controller.scheduling.QuartzSchedulingAgent; +import org.apache.nifi.controller.scheduling.CronSchedulingAgent; import org.apache.nifi.controller.scheduling.RepositoryContextFactory; import org.apache.nifi.controller.scheduling.StandardLifecycleStateManager; import org.apache.nifi.controller.scheduling.StandardProcessScheduler; @@ -594,10 +594,10 @@ public class FlowController implements ReportingTaskProvider, FlowAnalysisRulePr flowAnalyzer.initialize(controllerServiceProvider); } - final QuartzSchedulingAgent quartzSchedulingAgent = new QuartzSchedulingAgent(this, timerDrivenEngineRef.get(), repositoryContextFactory); + final CronSchedulingAgent cronSchedulingAgent = new CronSchedulingAgent(this, timerDrivenEngineRef.get(), repositoryContextFactory); final TimerDrivenSchedulingAgent timerDrivenAgent = new TimerDrivenSchedulingAgent(this, timerDrivenEngineRef.get(), repositoryContextFactory, this.nifiProperties); processScheduler.setSchedulingAgent(SchedulingStrategy.TIMER_DRIVEN, timerDrivenAgent); - processScheduler.setSchedulingAgent(SchedulingStrategy.CRON_DRIVEN, quartzSchedulingAgent); + processScheduler.setSchedulingAgent(SchedulingStrategy.CRON_DRIVEN, cronSchedulingAgent); startConnectablesAfterInitialization = new HashSet<>(); startRemoteGroupPortsAfterInitialization = new HashSet<>(); diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java index fa7c20865f..2b051121e0 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java @@ -32,7 +32,7 @@ import java.util.concurrent.Future; * invoked. * * @see TimerDrivenSchedulingAgent - * @see QuartzSchedulingAgent + * @see CronSchedulingAgent */ abstract class AbstractSchedulingAgent implements SchedulingAgent { diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/QuartzSchedulingAgent.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/CronSchedulingAgent.java similarity index 77% rename from nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/QuartzSchedulingAgent.java rename to nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/CronSchedulingAgent.java index beabd265e0..f44f1b813c 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/QuartzSchedulingAgent.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/CronSchedulingAgent.java @@ -23,25 +23,25 @@ import org.apache.nifi.controller.tasks.ConnectableTask; import org.apache.nifi.controller.tasks.ReportingTaskWrapper; import org.apache.nifi.engine.FlowEngine; import org.apache.nifi.processor.exception.ProcessException; -import org.quartz.CronExpression; +import org.springframework.scheduling.support.CronExpression; -import java.util.Date; +import java.time.OffsetDateTime; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { - private final Map<Object, Map<Integer, ScheduledFuture<?>>> quartzFutures = new HashMap<>(); +public class CronSchedulingAgent extends AbstractTimeBasedSchedulingAgent { + private final Map<Object, Map<Integer, ScheduledFuture<?>>> scheduledFutures = new HashMap<>(); - public QuartzSchedulingAgent(final FlowController flowController, final FlowEngine flowEngine, final RepositoryContextFactory contextFactory) { + public CronSchedulingAgent(final FlowController flowController, final FlowEngine flowEngine, final RepositoryContextFactory contextFactory) { super(flowEngine, flowController, contextFactory); } @Override public void shutdown() { - quartzFutures.values().forEach(map -> map.values().forEach(future -> { + scheduledFutures.values().forEach(map -> map.values().forEach(future -> { if (!future.isCancelled()) { // stop scheduling to run and interrupt currently running tasks. future.cancel(true); @@ -52,7 +52,7 @@ public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { @Override public void doSchedule(final ReportingTaskNode taskNode, final LifecycleState scheduleState) { - final Map<Integer, ScheduledFuture<?>> componentFuturesMap = quartzFutures.computeIfAbsent(taskNode, k -> new HashMap<>()); + final Map<Integer, ScheduledFuture<?>> componentFuturesMap = scheduledFutures.computeIfAbsent(taskNode, k -> new HashMap<>()); if (!componentFuturesMap.values().isEmpty()) { throw new IllegalStateException("Cannot schedule " + taskNode.getReportingTask().getIdentifier() + " because it is already scheduled to run"); } @@ -60,19 +60,19 @@ public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { final String cronSchedule = taskNode.getSchedulingPeriod(); final CronExpression cronExpression; try { - cronExpression = new CronExpression(cronSchedule); + cronExpression = CronExpression.parse(cronSchedule); } catch (final Exception pe) { - throw new IllegalStateException("Cannot schedule Reporting Task " + taskNode.getReportingTask().getIdentifier() + " to run because its scheduling period is not valid"); + throw new IllegalStateException("Cannot schedule Reporting Task " + taskNode.getReportingTask().getIdentifier() + " to run because its scheduling period is not valid", pe); } final ReportingTaskWrapper taskWrapper = new ReportingTaskWrapper(taskNode, scheduleState, flowController.getExtensionManager()); - final Date initialDate = cronExpression.getTimeAfter(new Date()); - final long initialDelay = initialDate.getTime() - System.currentTimeMillis(); + final OffsetDateTime initialDate = getInitialDate(cronExpression); + final long initialDelay = getInitialDelay(initialDate); final Runnable command = new Runnable() { - private Date nextSchedule = initialDate; + private OffsetDateTime nextSchedule = initialDate; @Override public void run() { @@ -98,7 +98,7 @@ public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { @Override public synchronized void doSchedule(final Connectable connectable, final LifecycleState scheduleState) { - final Map<Integer, ScheduledFuture<?>> componentFuturesMap = quartzFutures.computeIfAbsent(connectable, k -> new HashMap<>()); + final Map<Integer, ScheduledFuture<?>> componentFuturesMap = scheduledFutures.computeIfAbsent(connectable, k -> new HashMap<>()); if (!componentFuturesMap.values().isEmpty()) { throw new IllegalStateException("Cannot schedule " + connectable + " because it is already scheduled to run"); } @@ -107,9 +107,9 @@ public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { final CronExpression cronExpression; try { - cronExpression = new CronExpression(cronSchedule); + cronExpression = CronExpression.parse(cronSchedule); } catch (final Exception pe) { - throw new IllegalStateException("Cannot schedule " + connectable + " to run because its scheduling period is not valid"); + throw new IllegalStateException("Cannot schedule " + connectable + " to run because its scheduling period is not valid", pe); } for (int i = 0; i < connectable.getMaxConcurrentTasks(); i++) { @@ -117,12 +117,12 @@ public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { final AtomicInteger taskNumber = new AtomicInteger(i); - final Date initialDate = cronExpression.getTimeAfter(new Date()); - final long initialDelay = initialDate.getTime() - System.currentTimeMillis(); + final OffsetDateTime initialDate = getInitialDate(cronExpression); + final long initialDelay = getInitialDelay(initialDate); final Runnable command = new Runnable() { - private Date nextSchedule = initialDate; + private OffsetDateTime nextSchedule = initialDate; @Override public void run() { @@ -163,7 +163,7 @@ public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { } private void unschedule(final Object scheduled, final LifecycleState scheduleState) { - quartzFutures.remove(scheduled); + scheduledFutures.remove(scheduled); scheduleState.getFutures().forEach(future -> { if (!future.isCancelled()) { // stop scheduling to run but do not interrupt currently running tasks. @@ -183,15 +183,25 @@ public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent { public void setMaxThreadCount(final int maxThreads) { } - private static Date getNextSchedule(final Date currentSchedule, final CronExpression cronExpression) { + private OffsetDateTime getInitialDate(final CronExpression cronExpression) { + final OffsetDateTime now = OffsetDateTime.now(); + final OffsetDateTime initialDate = cronExpression.next(now); + return initialDate == null ? now : initialDate; + } + + private long getInitialDelay(final OffsetDateTime initialDate) { + return initialDate.toInstant().toEpochMilli() - System.currentTimeMillis(); + } + + private static OffsetDateTime getNextSchedule(final OffsetDateTime currentSchedule, final CronExpression cronExpression) { // Since the clock has not a millisecond precision, we have to check that we // schedule the next time after the time this was supposed to run, otherwise // we might end up with running the same task twice - final Date now = new Date(); - return cronExpression.getTimeAfter(now.after(currentSchedule) ? now : currentSchedule); + final OffsetDateTime now = OffsetDateTime.now(); + return cronExpression.next(now.isAfter(currentSchedule) ? now : currentSchedule); } - private static long getDelay(Date nextSchedule) { - return Math.max(nextSchedule.getTime() - System.currentTimeMillis(), 0L); + private static long getDelay(final OffsetDateTime nextSchedule) { + return Math.max(nextSchedule.toInstant().toEpochMilli() - System.currentTimeMillis(), 0L); } } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/CronSchedulingAgentTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/CronSchedulingAgentTest.java new file mode 100644 index 0000000000..5f0fef1ace --- /dev/null +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/CronSchedulingAgentTest.java @@ -0,0 +1,114 @@ +/* + * 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.nifi.controller.scheduling; + +import org.apache.nifi.components.state.StateManager; +import org.apache.nifi.components.state.StateManagerProvider; +import org.apache.nifi.connectable.Connectable; +import org.apache.nifi.controller.FlowController; +import org.apache.nifi.controller.ReportingTaskNode; +import org.apache.nifi.engine.FlowEngine; +import org.apache.nifi.reporting.ReportingTask; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class CronSchedulingAgentTest { + + private static final String DEFAULT_CRON_EXPRESSION = "* * * * * ?"; + + private static final String INVALID_CRON_EXPRESSION = "* * * * * * 2023"; + + private static final int CONCURRENT_TASKS = 1; + + @Mock + private FlowController flowController; + + @Mock + private FlowEngine flowEngine; + + @Mock + private RepositoryContextFactory repositoryContextFactory; + + @Mock + private Connectable connectable; + + @Mock + private ReportingTaskNode reportingTaskNode; + + @Mock + private ReportingTask reportingTask; + + @Mock + private StateManagerProvider stateManagerProvider; + + @Mock + private StateManager stateManager; + + private CronSchedulingAgent schedulingAgent; + + @BeforeEach + void setSchedulingAgent() { + schedulingAgent = new CronSchedulingAgent(flowController, flowEngine, repositoryContextFactory); + } + + @Test + void testDoScheduleConnectable() { + final String componentId = UUID.randomUUID().toString(); + final LifecycleState lifecycleState = new LifecycleState(componentId); + + when(connectable.evaluateParameters(eq(DEFAULT_CRON_EXPRESSION))).thenReturn(DEFAULT_CRON_EXPRESSION); + when(connectable.getSchedulingPeriod()).thenReturn(DEFAULT_CRON_EXPRESSION); + when(connectable.getMaxConcurrentTasks()).thenReturn(CONCURRENT_TASKS); + when(connectable.getIdentifier()).thenReturn(componentId); + when(flowController.getStateManagerProvider()).thenReturn(stateManagerProvider); + when(stateManagerProvider.getStateManager(eq(componentId))).thenReturn(stateManager); + + schedulingAgent.doSchedule(connectable, lifecycleState); + } + + @Test + void testDoScheduleReportingTaskNode() { + final String componentId = UUID.randomUUID().toString(); + final LifecycleState lifecycleState = new LifecycleState(componentId); + + when(reportingTaskNode.getSchedulingPeriod()).thenReturn(DEFAULT_CRON_EXPRESSION); + + schedulingAgent.doSchedule(reportingTaskNode, lifecycleState); + } + + @Test + void testDoScheduleReportingTaskNodeCronExpressionInvalid() { + final String componentId = UUID.randomUUID().toString(); + final LifecycleState lifecycleState = new LifecycleState(componentId); + + when(reportingTaskNode.getSchedulingPeriod()).thenReturn(INVALID_CRON_EXPRESSION); + when(reportingTaskNode.getReportingTask()).thenReturn(reportingTask); + when(reportingTask.getIdentifier()).thenReturn(componentId); + + assertThrows(IllegalStateException.class, () -> schedulingAgent.doSchedule(reportingTaskNode, lifecycleState)); + } +} diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/DummyScheduleState.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/DummyScheduleState.java deleted file mode 100644 index 91980b7f20..0000000000 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/DummyScheduleState.java +++ /dev/null @@ -1,26 +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.nifi.controller.scheduling; - -public class DummyScheduleState extends LifecycleState { - - public DummyScheduleState(boolean isScheduled) { - super("Dummy Component"); - setScheduled(isScheduled); - } - -} diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml index 957282749c..998bca8faa 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml @@ -267,11 +267,6 @@ <artifactId>swagger-annotations</artifactId> <scope>provided</scope> </dependency> - <dependency> - <groupId>org.quartz-scheduler</groupId> - <artifactId>quartz</artifactId> - <scope>provided</scope> - </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java index 6c31172292..c4198fe282 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java @@ -55,10 +55,9 @@ import org.apache.nifi.web.api.dto.ProcessorConfigDTO; import org.apache.nifi.web.api.dto.ProcessorDTO; import org.apache.nifi.web.dao.ComponentStateDAO; import org.apache.nifi.web.dao.ProcessorDAO; -import org.quartz.CronExpression; +import org.springframework.scheduling.support.CronExpression; import java.net.URL; -import java.text.ParseException; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -313,11 +312,9 @@ public class StandardProcessorDAO extends ComponentDAO implements ProcessorDAO { break; case CRON_DRIVEN: try { - new CronExpression(evaluatedSchedulingPeriod); - } catch (final ParseException pe) { - throw new IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid cron expression: %s", schedulingPeriod, pe.getMessage())); + CronExpression.parse(evaluatedSchedulingPeriod); } catch (final Exception e) { - throw new IllegalArgumentException("Scheduling Period is not a valid cron expression: " + schedulingPeriod); + throw new IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid cron expression: %s", schedulingPeriod, e.getMessage())); } break; } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java index 1de941b52e..6ccdb847be 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java @@ -49,10 +49,9 @@ import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO; import org.apache.nifi.web.api.dto.ReportingTaskDTO; import org.apache.nifi.web.dao.ComponentStateDAO; import org.apache.nifi.web.dao.ReportingTaskDAO; -import org.quartz.CronExpression; +import org.springframework.scheduling.support.CronExpression; import java.net.URL; -import java.text.ParseException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -227,11 +226,9 @@ public class StandardReportingTaskDAO extends ComponentDAO implements ReportingT break; case CRON_DRIVEN: try { - new CronExpression(reportingTaskDTO.getSchedulingPeriod()); - } catch (final ParseException pe) { - throw new IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid cron expression: %s", reportingTaskDTO.getSchedulingPeriod(), pe.getMessage())); + CronExpression.parse(reportingTaskDTO.getSchedulingPeriod()); } catch (final Exception e) { - throw new IllegalArgumentException("Scheduling Period is not a valid cron expression: " + reportingTaskDTO.getSchedulingPeriod()); + throw new IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid cron expression: %s", reportingTaskDTO.getSchedulingPeriod(), e.getMessage())); } break; } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE b/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE index 00782b4486..e80bf161e5 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE @@ -111,27 +111,6 @@ The following binary components are provided under the Apache Software License v The following NOTICE information applies: Copyright 2011 JsonPath authors - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - http://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) Jackson JSON processor The following NOTICE information applies: # Jackson JSON processor diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE b/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE index 19b472df35..51ea8a7a12 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE @@ -111,27 +111,6 @@ The following binary components are provided under the Apache Software License v The following NOTICE information applies: Copyright 2011 JsonPath authors - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - http://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) Jackson JSON processor The following NOTICE information applies: # Jackson JSON processor diff --git a/nifi-nar-bundles/nifi-framework-bundle/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/pom.xml index 6f29f7117b..3bcb44e461 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/pom.xml +++ b/nifi-nar-bundles/nifi-framework-bundle/pom.xml @@ -255,11 +255,6 @@ <artifactId>javax.ws.rs-api</artifactId> <version>2.1.1</version> </dependency> - <dependency> - <groupId>org.quartz-scheduler</groupId> - <artifactId>quartz</artifactId> - <version>2.3.2</version> - </dependency> <!-- open id connect - override transitive dependency version ranges --> <dependency> diff --git a/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE b/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE index fe2b8c3429..5ad70bcfba 100644 --- a/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE +++ b/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE @@ -265,27 +265,6 @@ The following binary components are provided under the Apache Software License v Copyright 2004 Sun Microsystems, Inc. Copyright 2011 The ROME Team - (ASLv2) Quartz - The following NOTICE information applies: - Copyright Declaration: - Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors. - - Trademark and Patent declaration - The name Software AG and all Software AG product names are either trademarks or registered trademarks of Software AG and/or Software AG USA Inc. and/or its subsidiaries and/or its affiliates - and/or their licensors. Other company and product names mentioned herein may be trademarks of their respective owners. - - Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://softwareag.com/licenses. - - Third Party declaration - This software may include portions of third-party products. For third-party copyright notices, license terms, additional rights or restrictions, please refer to "License Texts, Copyright - Notices and Disclaimers of Third Party Products". For certain specific third-party license restrictions, please refer to section E of the Legal Notices available under "License Terms and - Conditions for Use of Software AG Products / Copyright and Trademark Notices of Software AG Products". These documents are part of the product documentation, located at - http://softwareag.com/licenses and/or in the root installation directory of the licensed product(s). - - Confidentiality Disclaimer: - Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG. - Contact GitHub API Training Shop Blog About - (ASLv2) JCommander The following NOTICE information applies: JCommander Copyright Notices diff --git a/nifi-stateless/nifi-stateless-assembly/NOTICE b/nifi-stateless/nifi-stateless-assembly/NOTICE index 225cf11e19..98747baddd 100644 --- a/nifi-stateless/nifi-stateless-assembly/NOTICE +++ b/nifi-stateless/nifi-stateless-assembly/NOTICE @@ -149,11 +149,3 @@ The following binary components are provided under the Eclipse Distribution Lice (EDL 1.0) JAXB (JSR 222) Reference Implementation (org.glassfish.jaxb:jaxb-runtime:jar:2.3.5) (EDL 1.0) Istack Common Utility Code Runtime (com.sun.istack:istack-commons-runtime:jar:3.0.12) (EDL 1.0) TXW2 Runtime (org.glassfish.jaxb:txw2:jar:2.3.5) - -************************ -Eclipse Public License 1.0 -************************ - -The following binary components are provided under the Eclipse Public License 1.0. See project link for details. - - (EPL 1.0)(LGPL 2.1) c3p0 (com.mchange:c3p0:jar:0.9.5.4 - https://github.com/swaldman/c3p0) diff --git a/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE b/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE index d2f230e478..7505de5546 100644 --- a/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE +++ b/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE @@ -136,12 +136,3 @@ The following binary components are provided under the Common Development and Di (CDDL 1.1) (GPL2 w/ CPE) jersey-media-multipart (org.glassfish.jersey.media:jersey-media-multipart:jar:2.26 - https://jersey.github.io/) (CDDL 1.1) (GPL2 w/ CPE) MIME Streaming Extension (org.jvnet.mimepull:mimepull:jar:1.9.3 - http://mimepull.java.net) (CDDL 1.1) (GPL2 w/ CPE) OSGi resource locator bundle (org.glassfish.hk2:osgi-resource-locator:jar:1.0.1 - http://glassfish.org/osgi-resource-locator) - - -************************ -Eclipse Public License 1.0 -************************ - -The following binary components are provided under the Eclipse Public License 1.0. See project link for details. - - (EPL 1.0)(LGPL 2.1) c3p0 (com.mchange:c3p0:jar:0.9.5.4 - https://github.com/swaldman/c3p0)